Fadenoj en Python

La komputaj fadenoj permesas al ni fari taskojn samtempe. En Python ni povas uzi la modulon threading, sed estas multaj aliaj.

Ni kreos kelkajn simplajn fadenojn (threads).

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading
import time
import random

def sleeper(name, s_time):
    print('{} komencita je {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))

    time.sleep(s_time)

    print('{} finiĝis je {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))


for i in range(5):
    thread = threading.Thread(target=sleeper, args=(
        str(i + 1) + 'a fadeno', random.randint(1, 9)))

    thread.start()

print('Mi finiĝis, sed la aliaj fadenoj ne.')

Unue ni importis la bezonatajn modulojn: time, random kaj threading. Por krei je threads ni nur bezonas la lastan. Je time ni uzis por simuli takson kaj akiri ĝian tempo de komenco kaj fino; random havigas al nia takso hazardan daŭron.

La funkcio sleeper «dormas» (faras nenion) dum la tempo kiu ni specifas, diras al ni kiam komencis «dormi» kaj kiam finis «dormi». Kiel parametroj ni donas la nomon, kiu ni volas doni al la fadeno, kaj la tempon, dum kiu «dormos» la funkcion.

Poste ni kreas "por"-iteracion, kiu kreas 5 fadenojn, kiuj plenumas la sleeper-funkcion. En la konstruilo (threading.Thread) ni devas diri la funkcion por plenumi (target=sleeper) kaj la parametrojn, kiujn ni volas doni al ĝi (args=('str(i + 1) + 'a fadeno', random.randint(1, 9))).

1a fadeno komencita je 15:17:07.
2a fadeno komencita je 15:17:07.
3a fadeno komencita je 15:17:07.
4a fadeno komencita je 15:17:07.
5a fadeno komencita je 15:17:07.
Mi finiĝis, sed la aliaj fadenoj ne.
3a fadeno finiĝis je 15:17:13.
5a fadeno finiĝis je 15:17:13.
2a fadeno finiĝis je 15:17:14.
4a fadeno finiĝis je 15:17:14.
1a fadeno finiĝis je 15:17:16.

La resulto de la plenumo estas hazarda: ni ne scias kiu fadeno finos unue.

xdg-open

Tre utila komando estas xdg-open. Per ĝi ni povas plenumi iun ajn programon aŭ URLon el la komandlinio. Se mi plenumus xdg-open https://freakspot.net, malfermus sin la ĉefa paĝo el ĉi tiu retejo per Abrowser (mia defaŭlta retilo) kaj mi povus plenumi alian komandon. Unu malavantaĝo estas, ke ni nur povas aldoni unu parametron, do por malfermi du retpaĝojn, ni devus plenumi xdg-open dufoje.

ReTux: aventuro kontraŭ la fiŝa imposto

En la videludo ReTux, Tukso estas la ĉefrolulo de aventuro, en kiu li devos venki la Neĝan Reĝon, kiu klopodas trudi imposton pri fiŝoj. Neniu pingveno ŝatas, ke oni forprenu riajn fiŝojn.

Legu plu el ReTux: aventuro kontraŭ la fiŝa imposto

Enketo pri la somera tempo en la EU... Nur se vi donas informon al Guglo

La Eŭropa Unio estis konsultinta al ĉiuj civitanoj de la Eŭropa Komisiono pri la ŝanĝo de horo, farita por adapti la horloĝojn al la sunlumo. La konsulto funkcias pere de retenketo.

Tamen, oni ne povas plenumi ĝin sen ŝargado de ekstera kaj proprieta Ĝavoskripta kodo de Guglo, la programo reCAPTCHA. En la deklaro pri privateco ligilita el la retpaĝo, tamen, oni ne diras, ke oni sendas datumoj al Guglo.

Oni esperas multan partoprenon en la konsulto. Por Guglo ĝi estas bonege, ke milionoj da uzuloj laboru senpage enkomputiligantaj proprietajn kartojn aŭ ekzercantaj la armean algoritmon (ekzemple).

GitLab uzas proprietajn CAPTCHAjn

GitLab enhavas proprietan programon el Guglo, kaj ne ŝaijnas, ke ili formovos ĝin. Konkrete ĝi uzas la programon reCAPTCHA de Guglo, dokumentanta eĉ ĝian konfiguron.

Ĉi tio estas problema ne nur pro la temo de la programa libero, sed ankaŭ pro aliaj postefikoj de reCAPTCHA (kiel la labora ekspluatado kaj la vizaĝorekono por armeaj celoj).

La kodo ŝargas sin el la serviloj de Guglo, do ĝi povus bari la apertigon de novaj problemoj kaj la registron de novaj kontoj, kiam la Gugla servilo estu nealirebla.

Jam ekzistas malnove kelkaj problemoj malfermaj en la problemo-administrilo de GitLab.