• Розділяй і володарюй. Як працюють процеси в Python

    можуть робити стейтмент що як працює нп в лінукс не зовсім уявляючи про що це

    їхні уявлення згідно їхніх мануалів!
    а в їхніх мануалах нічого не пише про «states of mutexes, condition variables, and other pthreads objects» та які то буде мати наслідки якщо заломитися в такий мютекс з чайлда, що виявився унаслідуваний залокним від парента :)

    в них згідно мануалів «все класно», і юзають вони «як книжка пише» поки вони на ті «тонкощі» не напоролися))

    Та блін, це ж Пайтон, «кросплатформенна штука», яку «всюди можна юзати однаково», зокрема й multiprocessing.Process (поки не наткнешся на ті всі тонкощі!)

    Решта — «як у вінді» — зовсім не цікаво коли говорять про юніксові інтерфейси.

    та ні, якраз цікаво, бо його можна заставити бути як у вінді за допомогою set_start_method(’spawn’)
    ))

    Тоді
    1. Важкорепродюсаємі граблі з форком та мютексом під Лінухами для «обдарованого кейсу» зникають, й тепер нічого не висне!
    2. Код віддебаганий тою тімою, що працює на Лінухах, так де несумісність з spawn, він впаде ще на етапі розробки до того, як його спробують запустити на Вінді і одразу повилазить про те, що вони пхають в сабпроцес а воно «не піклиться»))

    Проблему вирішено (навіть дві), і це прекрасно :)

  • Розділяй і володарюй. Як працюють процеси в Python

    — в лінукс щоб не знати про syslog то треба вебпрограмером бути — для яких більш ніж мулйон сюрпрайзів буде на цьому рівні (тому для них треба булоб окрему категорію заводити на сайтах)

    а що вебпрограмери не запускають процесів (зокрема й з штатним, звичайним, звичним, номальним miltiprocessing.щостотам), й «в цьому» не буває задіяним fork/vfork?

    Чому вони повинні ходити по тих всіх граблять з лєвих непайтонівських «сюрпрайзів» просто юзаючи штатну АПІшку як пише мануал? Лєві граблі замість того, щоб просто вкодовувати те, що їм треба згідно ТЗ!

    а не про знати щодо існування syslog

    ні, це питання якраз про «знати», про хто й в якій аплікусі й шо саме пише «згідно ТЗ» в якісь файли...

    і тепер виходить «нє ти тою своєю лібою в лог більше не пиши, тепер в Лінухах пиши тільки через syslog, але я насправді не знаю чи в ньому нема тої ж проблеми» (ми ж почали з способів створення підпроцесів та наслідків, от я й кажу fork не дружить срідами та з мютексами, це факт... і особисто я це розглядаю як дизайнерський про*об отих «легендарних батьків засновників платформи», що тепер нам «дістався в спадок»))

    і це має заперечувати існування мануалів?

    От наразі я не маю готовенького мануала, що відповідає на мої питання щодо писання логів в сабпроцесі))

    Мануал пише
    «The entire virtual address space of the parent is replicated in the child, including the states of mutexes, condition variables, and other pthreads objects»

    і що?

    де тут про те, чи syslog гарантовано не поюзає мютекса, який внаслідував свій залоканий стейт від парента, й ніколи не розлокається?
    якщо нема такої готовенької відповіді, то syslog проблему не вирішує...

    я не хочу перелопчувати globc, musl, ще щось, щоб то з’ясувати))

    в більшості випадків для «простого смертного» простіше «забити» на цей «корнер кейс» як «занадто рідкісний», придумати воркераунд, запитати AI та взяти перший попавший (неправильний) солюшен, або й просто ігнорувати/приховати/не визнавати проблему :)
    (звісно, за винятком того кейсу, якщо той «простий смертний» і є той «цап відбувайло» кому треба інвестігувати саме таку проблему в особо обдарованому кейсі)...

    й це все «придумати воркераунд» ще навіть не доходячи до «замінити нашу кастомну лібу на syslog, й що ще не факт, чи то поможе»...

    і потенційно «не поможе» не лише через то, що умовні glibc/musl можуть «десь по дорозі» поюзати мютекс,
    а ще й тому, що навіть поюзавши SysLogHandler, не факт, що нема мютексів в самих лібах Пайтона по дорозі від logger.info до того SysLogHandler... (ця штука не покрита мануалом, то що, тепер подивися сорси Пайтна 3.10, 3.11, 3.12 щоб то з’ясувати? та ну його в баню!)

    Нагадую для Пайтона з Лінуховим fork-ом
    для
    multiprocessing.Process(target=чототам...

    оте «чототам», воно згідно мануалу для fork бачить «відкопійовану пам’ять» та всі «states of mutexes, condition variables, and other pthreads objects» як їх полишив його пайтонівський парент, а не «повторно завантажений для імітації форка» модуль як у вінді.

    Відповідно якщо в пайтонівському чайлді ми ломимося в той мютекс який вже трапився в пайтонівському паренті бути залоканим іншим срідом в момент fork у «нашому сріді», то в чайлді ми вже зависли «навіки», бо розлокувати його вже ніхто не буде!
    Це — дефект бай дізайн операції fork, про який нічого не сказано в мануалах вебпрограмера про multiprocessing.Process!

    І так, тоді set_start_method(’spawn’) рішає проблему швидко, бо без вроблення додаткового ефорта, то «а чорт його знає, що там насправді поламалося й чого в дочірньому процесі воно висне» при юзанні канонічного fork))

    Але до чого це я? Та якраз до того, що тих «вебпрограмерів» взагалі не повинно колихати який там fork чи spawn чи forkserver та решта «мулйон сюрпрайзів буде на цьому рівні», бо ці всі проблеми в «ідеальному світі» вже давно мали б бути вирішені так, щоб не треба було нікого кликати розгрібати ті тонни їхньго «гавнокоду», що вони там в себе накодили на лєвому проекті, для того, щоб таки знйти спражній руткоз воркераунд, який ховається в розумінні тих Cшних АПІшок, в які «вебпрограмери» взагалі не мали б заглиблюватися :)

  • Розділяй і володарюй. Як працюють процеси в Python

    і не знати про syslog()

    Так в нього можна писати за допомгою «бібліотеки»,
    а можна взагалі писати логи «не туди» або «не тільки туди» за домомогою «портабл бібліотеки», і взагалі багато опцій, бо «в нас портабл аплікуха» й «все загорнуто» (і не обов’язково «ми» є авторами тих обгорток)...

    та й нема й далі відповіді, а точно бібліотечна реалізація syslog(3) не юзає мютексів? Чи таки юзає? А може таки юзає?

    __fsetlocking, той лок при «клонуванні всього» зберігається якщо ми будемо ломитися з дочірнього процесу чи ні? А інші задіяні в реалізацій __syslog_chk/__vsyslog_chk АПІшки мають мютекси/локи?

    іншими словами «все класно» тільки на словах... реальний світ не відповідає ідеальностям

  • Розділяй і володарюй. Як працюють процеси в Python

    Чому? Може, просто syslog().

    це якщо знати про це й жити в Сшному світі, а не пробувати залогувати готовою модною лібою «як аже прийнято на проекті й до якох всі звикли»...
    до речі той syslog він в третьому розділі man, отже це... бібліотечна функція... там точно нема мютекса всередині? чи таки є? (мені, чесно, зараз дивитися це по сорсах — влом, та й якщо зараз нема, то не факт, чи не допиляють потім... але я трохи про інше: кожна ось така «гавнюлічка», то черговий спосіб «зашпортатися» й додаткове джерело матюків та проклять щодо «недосконалого світу»)

    А от fork — він дуже змістовно використовується

    так, так, гнучкість і тд, але, все ж, може виявитися краще робити «це» в окремому «форксервері» ніб бавитися з усіма наслідками (що, втім, також окрема незручність і ще одне джерело проклять)

    А для тих, кому незручно, є posix_spawn().

    нє нє, там теж треба бавитися з posix_spawn_file_actions_addclose...
    нето... для «рдного» форка closefrom є тільки в BSD (якщо я нічого не пропустив, але полюбе «недосконалий світ»)

    Ой про це не треба, то окремий жах. Дуже окремий.

    нє нє, я не про те, ніби «вінда краща» я в загальному, що такі, здавалося б прості речі обростають проблемами на рівному місці

    Я знаю проблеми Unix, можна ще з десяток навести. Але ж працюють і з цим...

    ну от і я про те саме... куди не глянути — абсолютна печалька...
    я не про міряння хто більше граблів знає та знайде,
    а про те, що «в ідеальному світі так не повинно було б бути»!

  • Розділяй і володарюй. Як працюють процеси в Python

    Або навіть якщо exec() не виконався — зробити запис у лог про це, а не тільки _exit(127) — а це значить маніпулювання у памʼяті.

    Який запис у лог?
    Той лог, що локається окремим мютексом в парент процесі?...

    А що як в момент форка в паренті інший срід якраз писав в саме той лог,
    то дочірній «відфорканий» процес, отже отримає «все скопійоване» з тим залоканим мютексом (але вже без «того іншого» сріда який повинен би був відлокати мютекс), й «наш стрід тут» буде пробувати захопити в чайлді той мютекс для логів, який не буде ніколи відлокано?

    То само, насправді й про решту закопійованих від парента штук, й що там з ними робили в паренті інші сріди, й в якому «недоробленому» стейті вони лишилися?...

    А ще наслідування дескрипторів, якщо спецом не подумати як їх заткнути (навіть зі «спавном») то чайлд отримує «в навантаження» від парента «наслідуванням» купу якогось «барахла» (якщо цілеспрямовано всюди і в коді і в чужих бібліотеках забути залізно юзати O_CLOEXEC...)

    Коротше fork та решта «історичної спадщини» від «кононічного Юліска» то є «ще ті» сюрпризи...

    ___________
    Й та ж вінда з її нібито «позікс сумісністю» (доданою, очевидно, з маркетингових міркувань) теж підсовує свиню, всякі fopen та _wfopen ім треба обов’язково передавати флажох N... при тому сам _wfopen повертає не віндовий хендл, а FILE* й потім передавати FILE* в чайлд процес не має ніякого змісту, бо там можна зробити опен лише для хендла (наслідується ж хендл, відповідно вся фішка «наслідування» для АПІшки, що повертає FILE* — абсолютно юзлесс непотрібщина, що тільки додає граблів)...

    ...Відповідно без того N чайлди продовжують «займати» аполютно лєві (й непотрібні їм) файли, навіть якщо парент вже «виходить», він все одно їх не може підчистити за собою свої власні файли, вони ж бо типу «юзаються» чайлдами...

  • Як працює реактивність на JavaScript

    «Самопідписування» при створенні ефекту — цікавий прийом, втім «для повноти картини» бракує ще й «відписування»))

  • Громада, Python та щирі обійми. Мій досвід учителювання в селі

    Ви плутаєте забудову передмість з життям в селах

    Ні, ні, я саме про життя в «селі» (тому, що «значний за територією і кількістю житлових будівель населений пункт неміського типу, більшість мешканців якого займаються сільським господарством») без приналежності до тої «більшості» що «займається сільським господарством» :)

    Якщо нема портеби «фізичної присутності в офісі» (а, як показує практика, в багатьох випадках такої потреби насправді нема, якщо не зважати на нездорове бажання деяких менеджерів все контролювати, й «вживу» бачити мордочки та «мову тіла» своїх праціників), то нема й мотивації проживання в... «зонах щільної забудови»... насправді єдиний мотив жити в міті, що ще лишається, то щоб можна було «завезти дітей в школу на навчання» (якщо школа в селі фігова а в місті — хороша), що, насправді мало б кращий розвязок у вигляді покращення середовища навчання саме в селі!...

    А міста — це квартали для робітників (пролетарів) кому треба «стояти біля станка/прилавка», щодня приходити «керувати механізмом», чи «прибирати/обслуговувати» і так далі...
    Але так як всю велику промисловість де щось реально випускалося, якась продукція, її в містах вже знищено й забудовано «кварталами» та «ЖК», то й смисл бути присутнім в такому місті насправді абсолютно відсутній...

  • Громада, Python та щирі обійми. Мій досвід учителювання в селі

    Це правда, зарплати освітян, нажаль, залишають бажати кращого,
    але все ж, корки з крутих авто «на в’їзд» та «на виїзд» й «круті» новобудови в селах довкола міст свідчать, що жити «в селі», все ж, більш бажана (омріяна) опція...

    Звідти й проекти «ІТ віліджів», біля умовних «Глинанаварій», що «десь біля Львова» або й утопічні проекти «ревіталізації», що на них люди, втім, «ведуться»...

  • Громада, Python та щирі обійми. Мій досвід учителювання в селі

    Учням пощастило з Вчителькою а Вчительці — з учнями...
    + Взаємна мотивація й знаходження «цікавих штук», що справді стимулюють подальший інтерес та розвиток...

    айтівиці, яка наважилася на дауншифтинг та пішла в сільську школу викладати інформатику й математику

    Не погоджуся з привязкою терміну «село» та «дауншифтинг», в тій же Польщі жити в невеликому містечку або в селі — то насправді вважається «дуже круто», й набагато престижніше, ніж в квартирі в стандарних «блоках»...

    Якщо довкола природа, річка, поруч ліс та прекрасні краєвиди, а «огрудек» лише як хоббі, а не основний заробіток, то це ідилія порівнянно з життям в «кам’яних джунглях»... особливо якщо рімоунта робота, заняття не пов’язане власне з сільським господорством, роботою «з землею» та «збиранням суниць»))...

    Насправді можна пригадати й давнішу нашу історію, коли шляхта, інтелігенція «просвітлювали» простий люд, й тилуловані дворяни (такі, як, наприклад, ті ж Косачі) мали свої маєтки саме в таких місцевостях, що ми тепер називаємо «селом», тобто наше сучасне сприйняття «села» як якогось «нерозвинутого місця», нажаль, досі лишається дуже упереджене (зокрема й завдяки «шкільній програмі літаретури» та рокам «безпаспортних селян» що працювали в «колхозі» за 3 рублі зарплати й «трудодні»)...

    ______
    Звісно, бувають ситуації, коли в учнів проблеми (або настрої) зовсім іншого порядку ніж «шкільні інтереси», й вся мотивація до навчання «множиться на нуль»...
    Я встиг повчитися в 90-х в «звичайній школі» (в місті, не в селі!) де серед учнів панували «понятія» та «гопництво», мотиви «коли подорослішаю» бути... бандитом (а не «отстойним» вченим з «НДІ де не платять зарплату», що ще й підігрівалося відповідним репертуаром з телевізора де глорифікувалися бандити в малинових піджаках на 600мерсах),
    тоді школа то була для дітей типу «зона», сприймалася учнями як місце «відбування», а учні були у великому відсоткові «гопніками» що сповідували відповідну «культуру»...
    Й ніяке «виховання» від вчителів чи з шкільної програми не мало ніякого ефекту, бо програма з літератури та історії тоді, то була суцільна депресуха, демотивація... Звісно що бандити з телевізора для тодішніх дітей своїм «медіа образом» були крутіші за тих «клінічних невдах» про яких нам розвовідали в школі на уроках як про «справжніх українців»...

    Я так собі надіюся, що все ж, «ті роки вже минули» й деструктивні штуки або викорчувано, або й відпали самі по собі :)

  • Розділяй і володарюй. Як працюють процеси в Python

    Скидаю капелюха й підтримаю таку правильну технічну тему,
    лише додам що для «непосвячених» Пайтонівська (та Лінуксово/Юніксова) fork/IPCшна магія «яким дивом ми одразу викликаємо функцію нашого процесу в тому новому процесі» виглядає доволі «дико», особливо в тому контексті що віндовий CreateProcess то ніразу не fork і не створює «ідентичну копію процесу разом з усім» а «просто запускає екзешку»...,
    й відповідно реалізація «тої краси» у Вінді (та в Макові, бо він юзає spawn) то імітація Лінукса з певними обмеженнями, де пайтонівський модуль вантажиться по новій і де «викликаний» target повинен бути серіалізовуємий за домомогою pickle...

    Кожен метод IPC насправді заслуговує окремої статті, але, принаймні охочі тепер знають «куди розкопувати далі»...

    А ще розкриття теми async/await могло б стати ідеальним завершенням серії (навіть попри жахливу здатність async інфікувати все але в умовах коли розплодити багато потоків чи процесів — занадто дорого, цей підхід з async/await може бути єдиним способом писати «людський», лінійний, послідовний код, візуально не шматуючи його на коллбеки й не бавлячись в «академічні» забавки з FSMками коли окремий «wait стейт» та івент на «кожен пчих» виклику чогось асинхронного)

  • Python без блокувань. Як працюють потоки

    Першим ділом подяка за україномовний контент (ось саме такого контенту й бракує в «Укрнеті», щоб подібні статті можна було рекомендувати джунікам для освітньої мети, а не пояснювати самому:) чудовий матеріал)...

    Й, одразу, в даному контексті раджу «забити» на «особиву думку» тих «перфекціоністів від науки», що накидаються в подібних випадках з критикою на простий та інтуітивно зрозумілий україномовний контент (багатьох з тих «учених» насправді «душить жаба» адже їхні власні «праці» часом нагадують відому «роботу» про «корчувальника» — такі ж беззмістовні та нікому незрозумілі)

    =============
    закон Літтла виглядає простим та інтуітивно зрозумілим (аж дивно, чого в «ц.с. учених» зайняло аж так довго його виведення), але абсолютно не можу доперти яким боком він до виведеної формули...

    Втім запропонована формула для кількості потоків, що «напосідають» на GIL чудово виводиться також інтуітивно «на хлопський розум»: заб’ємо на розподіли та решту наукових «премудростей»!

    Tочік — то якраз той час, що ми можемо віддати іншим потокам щоб вони його «заповнили»
    тоді (Tобч + Tочік) сумарний час що його «вижруть всі разом» цей та решта потоків при «щільному заповненні»
    а далі (Tобч + Tочік) / Tобч то відношення "вижруть всі"/"вижре один"
    тобто якраз й дасть кількість потоків щоб «заповнити щільно все»...

    Тут чую за таке чайницьке «доведення» в мене вже летять гнилі помідори та тухлі яйця від «учених», але це чудове початкове значення, звідки можна почати практичні експерименти та вимірювання, замість того, щоб застрягати в «аналізі-паралізі» строгих математичних розрахунків))

    Вивести «більш мудру» формулу займе набагато більше часу ніж цей початковий естімейт, але все одно та формула не враховуватиме ні (умовно) часів роботи та затупів решти софта (й інших задач, що теж користуються GIL і в реальному кейсі будуть неодмінно присутні) ні затрат на створення та переключення тих потоків, ні решти несподіваних факторів (що дуже залежать від конкретного сценарію юзу на практиці)...

    =============
    PS. «Потоки» в Пайтоні то не (лише) про паралелізм, а про написання «нормального», синхронного, лінійного, послідовного коду замість отого всього потворної спагетті каші з «callback hell»...

    Для тієї ж мети придатні (та принадні) також й трюки з async/await, що, втім, не настільки зручні, й навіть відразні тим, що досить одному await «завестися» десь в глибині викликів, й він «заражає» async/await всі охоплюючі виклики (й відповідні АПІшки), й воно розлазиться по кодові як болячка...

    Підтримав: Svitlana Sumets
  • Ми намагаємося створити український Реддіт

    власне
    Але
    але
    що

    і що?

    можна ще разів 100 відкопіпейстити в цитатах одне й те саме, але все одно буде беззмістовна фігня

  • Ми намагаємося створити український Реддіт

    коли планується? доживу я?

    Це вже нагадує прогнозування вангування наших «аналітиків» коли й що станеться...

    Статися може «що завгодно»... власне й всі події попередніх років показують що «прогнози» не працюють :)

  • Ми намагаємося створити український Реддіт

    і що? ))
    якщо це знову натяк, що «в нас в принципі» не може бути свого «Ататюрка», уособленого в одній особі, чи колективно, то прошу пана «подвійні, сліпі, рандомізовані, плацебо контрольовані» на ту тему «в студію»...

    Та й не треба бути «унікумом» чи «генієм» щоб ту реформу провести: весь ж розвязок зводиться до того, щоб серед всієї «поліфонії» версій латинок обрати одну, проголосувати «монобільшістю» і насадити силою, від дитсадка до держустанов й дорожніх вказівників... Й то піде скорше і веселіше ніж насадження «діясіті» та решти «пакращень»...

    Звісно «лінгвісти-мовознавці» будуь «ср@ти цеглою», ну і чорт з ними... якщо «латинка» не буде «завумною» як «енглісх лангуаге», а буде проста, як «латинка СМС», то приживеться, накрайняк за декілька років можна буде вже «виправлену латинку» запровадити...

  • Ми намагаємося створити український Реддіт

    так не бачиш і у тому же ж і фішка но я натякну в лоб так по лбу

    В мене є «погана звичка»: я ніколи не розвязую «натяків», мені нецікаво цьому приділяти час :)

    не українець

    І що? Це знову якась антинаукова теорія, про «нетакість» українців яку «має на увазі» автор?
    Ну то мені влом розбиратися з тими всіми теоріями (їх вагон та маленький візочок)...
    давай одразу готові «подвійні, сліпі, рандомізовані, плацебо контрольовані», а без того всі мудрствування на ту тему — софістика та інформаційне сміття :)

  • Ми намагаємося створити український Реддіт

    То колись були монстри «Українського ЖЖ», ще до того, як його викупив «Носик»))

    Деякі шедеври ще з тих часів досі збереглися

  • Ми намагаємося створити український Реддіт

    до речі як так пригадую на стековерфлоу був якийсь руський варіант попадав час від часу у видачі щось страшне але давне не бачив вже тож може таки помер

    Воно туди само й досі веде, якщо запит з україни циріліцей

    до речі а як же ж саме вони туди «попадають»? руській мір же ж з України тупо «забанений по айпі» хіба ні?

    Ні, не все, той же «хабр» по більшості працює...
    канали всяких «тоі соі», «алєксів гіверів», «романа рсу» і тд й далі мелькають...

    Є цілі ютуб канали з халявними кінофільтами про «рускіх дєсантнікав»...

    А лише нещодавно вся «патріотична туса» дуже побивалася, що перше місто в скачуваннях — музичка з рашки... а минулого року про «слово пацана» і все таке

    а чого ж ні 400 млн популяції переважно спільно мовний простір латинсько іспанський

    Навіть українські «диванні воїни» успішно про про*бали той «неангломовний світ»...

    поляки вже ж точно не гуглять кирилицей ))

    І це прекрасно!
    Треба що наші пошуки «українською латинкою» вели в Україну або в Польщу, Словаччину, Чехію, Хорватію... ))

  • Ми намагаємося створити український Реддіт

    Упертість затятих «тягнибаксів» та решти компанії «професійних націоналістів» в частині «полононенависництва» не знає міри ...навіть попри те, що з великою ймовірністю «поляни» над Дніпром то «ті самі» поляни, що й над Віслою згідно Нестора (західні поляни, то і є поляки)...
    а ще про подібність з поляками про що можна знайти й мовознавчі, й ДНК дослідження, наприклад шукати Pawel Golik: nie da się odróżnić genomu Polaka od Ukraińca czy Słowaka)

    ...

    А вигоду з тої діяльності «професійних націоналістів» здобуває, звісно, лише рашка...

  • Ми намагаємося створити український Реддіт

    наявні приклади опору американізмам

    Ce jaki?
    Czasom dejaki developery majutj polovynu sliv — anglicyzmy na «ukrajinsjkyj maner»: зарівкаєрили, поюзали, зааплоадили, задеплоїли, поконфігурували...

  • Ми намагаємося створити український Реддіт

    досить тупо визначити власні такі самі права на тої самої совєцької

    я вже тут писав в іншій гілці,
    спеціально навчені люди спеціально натреновані ШІ повинні написати для ерефян паралельну вікіпедію, з нашою версією історії, щоб ерефяни могли читати то їхньою мовою...

    І навіть халявні кінофільми з пригодами спеціально для них, щоб не про «рускіх дєсантнікаф гєроєф сво», а все навпаки... і тд... радіо «свабодная расія» нахаляву в інтернеті їхньою мовою...

← Сtrl 1... 1617181920...23 Ctrl →