Немного про стремные хаки, которые работают:
В проекте dava.engine, в классе файла под андроидом есть код, который 10 раз подряд пытается открыть файл и засыпает на 100 милисекунд, если открыть не получилось. Казалось бы, зачем? Этот код появился после фикса бага в DLC - только что скаченный файл при попытки открытия был недоступен. Эмпирически вывели, что после 8 попыток файл гарантированно открывался. Вот и вставили 10 (на всякий случай!) попыток на открытие.
Стоит отметить, что есть похожий хак в коде хромиума - попытка удаления файла два раза подряд.
К сожалению, наш мир не идеален и нужно понимать, что на файлы - это внешняя среда по отношению к программе, и с этой средой может твориться все что угодно - файлы могут быть использованы другими процессами (вирусы, антивирусы, системы контроля версий и прочие сканеры), баги по работе с файлами в других приложениях и же даже нас может подвести оборудование.
Если с кодом в хромиуме это выглядит как простое решение достаточно сложной проблемы, то в коде dava.engine это грязный хак. Проблема, очевидно, есть и с ней стоило бы разобраться. Почему временная задержка помогает? Может сообщение о завершении скачки файла пришло раньше, чем оно на самом деле произошло? Файловые дескрипторы закончились? Сторонние процессы лочат доступ? К сожалению, узнать это будет уже сложно. Код ведь работает, а если работает - не трожь. 🙂
В проекте dava.engine, в классе файла под андроидом есть код, который 10 раз подряд пытается открыть файл и засыпает на 100 милисекунд, если открыть не получилось. Казалось бы, зачем? Этот код появился после фикса бага в DLC - только что скаченный файл при попытки открытия был недоступен. Эмпирически вывели, что после 8 попыток файл гарантированно открывался. Вот и вставили 10 (на всякий случай!) попыток на открытие.
Стоит отметить, что есть похожий хак в коде хромиума - попытка удаления файла два раза подряд.
К сожалению, наш мир не идеален и нужно понимать, что на файлы - это внешняя среда по отношению к программе, и с этой средой может твориться все что угодно - файлы могут быть использованы другими процессами (вирусы, антивирусы, системы контроля версий и прочие сканеры), баги по работе с файлами в других приложениях и же даже нас может подвести оборудование.
Если с кодом в хромиуме это выглядит как простое решение достаточно сложной проблемы, то в коде dava.engine это грязный хак. Проблема, очевидно, есть и с ней стоило бы разобраться. Почему временная задержка помогает? Может сообщение о завершении скачки файла пришло раньше, чем оно на самом деле произошло? Файловые дескрипторы закончились? Сторонние процессы лочат доступ? К сожалению, узнать это будет уже сложно. Код ведь работает, а если работает - не трожь. 🙂
GitHub
smile4u/dava.engine
Game Engine. Contribute to smile4u/dava.engine development by creating an account on GitHub.
Как в астраномии ведется обмен знанием о событиях взрыва сверхновых, гравитационных волнах и прочее? Мне казалось, что это некие пресс релизы с кучей excel файлов, которые рассылаются по почте. А если что-то срочное - то звонят по телефону или даже скайпу. Не знаю с чем связано такое глупое заблуждение, но я был рад узнать о International Virtual Observatory Alliance.
Смысл этого сообщества в создании "виртуальной обсерватории" для своевременного обмена астрономическими событиями. Эти события имеют описываются в определенном формате - VOEvent (в xml =). Для обмена есть свой собственный протокол поверх TCP/IP VOEvent Transport Protocol. Соответственно, для всего этого есть проект на github.
Зачем это? И что это дает?
Да все просто - обсерватории мира объединены в одну сеть и если какая-либо обсерватория регистрирует событие о, к примеру, гравитационных волнах, то можно автоматически навести телескоп на предполагаемый участок неба и в реальном времени снять другие параметры этого события.
Есть так же и специализированные проекты - для получения сообщений конкретно о гамма-всплесках. Без проблем получилось запустить, посмотрим, сколько нотификаций о событиях я получу =) UPD. За 15 минут - 3 события.
Смысл этого сообщества в создании "виртуальной обсерватории" для своевременного обмена астрономическими событиями. Эти события имеют описываются в определенном формате - VOEvent (в xml =). Для обмена есть свой собственный протокол поверх TCP/IP VOEvent Transport Protocol. Соответственно, для всего этого есть проект на github.
Зачем это? И что это дает?
Да все просто - обсерватории мира объединены в одну сеть и если какая-либо обсерватория регистрирует событие о, к примеру, гравитационных волнах, то можно автоматически навести телескоп на предполагаемый участок неба и в реальном времени снять другие параметры этого события.
Есть так же и специализированные проекты - для получения сообщений конкретно о гамма-всплесках. Без проблем получилось запустить, посмотрим, сколько нотификаций о событиях я получу =) UPD. За 15 минут - 3 события.
Принцип работы алгоритма Код Хаффмана. Используется в архиваторах, изображениях и при передаче данных по HTTP.
Алгоритм простой, и, как по мне, потрясающе красивый, поэтому обязателен к ознакомлению.
Алгоритм простой, и, как по мне, потрясающе красивый, поэтому обязателен к ознакомлению.
https://github.com/kamranahmedse/developer-roadmap
Ветка развития fronend, backend, devops специалиста в картинках) Оргиниальный способ, нужно сказать, так как каждый желающий может выразить свое пожелание создав Issue или pr c фиксом, коих там много)
Ветка развития fronend, backend, devops специалиста в картинках) Оргиниальный способ, нужно сказать, так как каждый желающий может выразить свое пожелание создав Issue или pr c фиксом, коих там много)
GitHub
GitHub - kamranahmedse/developer-roadmap: Interactive roadmaps, guides and other educational content to help developers grow in…
Interactive roadmaps, guides and other educational content to help developers grow in their careers. - kamranahmedse/developer-roadmap
Запилил тут недавно пакет для питона, подробнее в статье:
https://telegra.ph/Idealnyj-proekt-paketa-s-podderzhkoj-raznyh-versij-pitona-04-24
https://telegra.ph/Idealnyj-proekt-paketa-s-podderzhkoj-raznyh-versij-pitona-04-24
Какой смысл несет нижнее подчеркивание в питоне?
https://hackernoon.com/understanding-the-underscore-of-python-309d1a029edc
https://hackernoon.com/understanding-the-underscore-of-python-309d1a029edc
Hackernoon
Understanding the underscore( _ ) of Python
The <em>underscore</em> (_) is special in Python.
Очень бесит в поисковой выдаче qaru.site, который по факту является автоматически переведенными ответами со stackoverflow.com.
Благо добрые люди написали блокировщики поисковой выдачи. Сначала попробовал блокировщик от гугла, но оказалось что он уже мертв). Но нашелся более удачный вариат Google Hit Hider, который работает, кстати, не только для гугл поиска.
Советую скачать Violentmonkey (потому что он опен сорсный) и установить непосредственно скрипт для блокировки.
И все работает отлично!
Благо добрые люди написали блокировщики поисковой выдачи. Сначала попробовал блокировщик от гугла, но оказалось что он уже мертв). Но нашелся более удачный вариат Google Hit Hider, который работает, кстати, не только для гугл поиска.
Советую скачать Violentmonkey (потому что он опен сорсный) и установить непосредственно скрипт для блокировки.
И все работает отлично!
Duff's device - пример извращения, которое так любят создавать программисты.
Это раскрутка цикла вкупе с необычной возможность языка С - сквозная конструкция do{}while.
И именно это необычное свойство позволяет создать облегченный потоки на голом языке C.
Можно почитать статью Операционная система из говна и палок, там описан подход с указанием всех источников.
register n = (count + 7) / 8; /* count > 0 assumed */
switch (count % 😍
{
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while (--n > 0);
}
Это раскрутка цикла вкупе с необычной возможность языка С - сквозная конструкция do{}while.
И именно это необычное свойство позволяет создать облегченный потоки на голом языке C.
Можно почитать статью Операционная система из говна и палок, там описан подход с указанием всех источников.
Wikipedia
Устройство Даффа
оптимизированная реализация последовательного копирования
Есть кучу реально крутых проектов, которые меняют мир к лучшему.
А есть fartscroll.js 🙂
А есть fartscroll.js 🙂
Кнут за найденные в своей книге "Искусство программирования" опечатки платит по одному шестнадцатиричному доллару.
Советую почитать статью, как чувак заработал целых 0x$3 доллара.
Советую почитать статью, как чувак заработал целых 0x$3 доллара.
Something Something Programming
I Got a Knuth Check for 0x$3.00
Donald Knuth is a computer scientist who is so committed to the correctness of his books that he offers one US hexadecimal dollar ($2.56, 0x$1.00) for any “bug” found in his books, where a bug is anything that is “technically, historically, typographically…
Forwarded from DevBrain
Для тех, кто частенько обновляет версии Python. Будьте бдительны, планируется зачистка стандартной библиотеки в 3.9 и 3.10: http://www.opennet.ru/opennews/art.shtml?num=50726
www.opennet.ru
Намечена большая чистка стандартной библиотеки Python
Разработчики проекта Python опубликовали предложение (PEP 594) по проведению значительной чистки стандартной библиотеки. К выносу из стандартной библиотеки Python предлагаются как явно устаревшие и узкоспециализированные возможности, так и компоненты, в которых…
Даже если ваш аккаунт и пароль хранится в виде хеша и никогда не передается серверу явно, при угоне базы можно восстановить по хешу ваши креды. Тут можно скачать словарь таких хешей:)
https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm
Поэтому:
1) Пользователи - не используейте одни и те же пароли
2) Разработчики - дополнительно солите хеш (можно даже несколько раз), когда кладете в базу.
https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm
Поэтому:
1) Пользователи - не используейте одни и те же пароли
2) Разработчики - дополнительно солите хеш (можно даже несколько раз), когда кладете в базу.
crackstation.net
CrackStation's Password Cracking Dictionary (Pay what you want!)
Download CrackStation's password cracking wordlist.
Livelock - аналог deadlock, только система не блокируется, а занимается бесполезной работатой и ее состояние постоянно меняется, но тем не менее она зациклилась.
https://deadlockempire.github.io/
Клевый онлайн тренажер для понимания сути проблем синхронизации потоков.
Зарядка для ума и прокачка твоего технического скила!
Клевый онлайн тренажер для понимания сути проблем синхронизации потоков.
Зарядка для ума и прокачка твоего технического скила!
deadlockempire.github.io
The Deadlock Empire
Slay dragons, learn
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
Еще одна интересная проблема связанная с синхронизацией потоков.
Есть два потока - с высоким приоритетом High и низким приоритетом Low. Им обоим нужен экслюзивный доступ к некому распределенному ресурсу Res. Если поток Low захватит ресурс Res раньше, чем High, то возникает ситуация называемая Priority Inversion - т.е. более приоритая задача ожидает менее приоритетную.
Это проблема не приводит к бескончным циклам и зависанием, но может привести к значительному снижению производительности и к ложным срабатываниям мониторинговых систем.
Есть два потока - с высоким приоритетом High и низким приоритетом Low. Им обоим нужен экслюзивный доступ к некому распределенному ресурсу Res. Если поток Low захватит ресурс Res раньше, чем High, то возникает ситуация называемая Priority Inversion - т.е. более приоритая задача ожидает менее приоритетную.
Это проблема не приводит к бескончным циклам и зависанием, но может привести к значительному снижению производительности и к ложным срабатываниям мониторинговых систем.
Wikipedia
Priority inversion
undesirable computing scheduling scenario
Forwarded from Книги для программистов
Maykl_A_Di_Spetsio_-_Prevoskhodnye_Golovolomki.pdf
26 MB
Превосходные головоломки, развивающие критическое мышление
Майкл А. Ди Специо.
В этой книге 83 задачи известного американского мастера головоломок, развивающие способность логически мыслить, правильно воспринимать и анализировать реальные факты и события, уверенно ориентироваться в огромном количестве информации. Необычные ситуации и юмор делают решение этих задач особенно интересным.
#book
Майкл А. Ди Специо.
В этой книге 83 задачи известного американского мастера головоломок, развивающие способность логически мыслить, правильно воспринимать и анализировать реальные факты и события, уверенно ориентироваться в огромном количестве информации. Необычные ситуации и юмор делают решение этих задач особенно интересным.
#book
Forwarded from Книги для программистов
[Gleizer_D.,_Madhav_S.]_Mnogopolzovatelskie_igrue.pdf
6.9 MB
Многопользовательские игры. Разработка сетевых приложений
Глейзер Д., Мадхав С.
Сетевые многопользовательские игры - это многомиллиардный бизнес, привлекающий десятки миллионов игроков. Эта книга на реальных примерах рассказывает об особенностях разработки таких игр и основах построения надежной многопользовательской архитектуры.
Вы узнаете об основах сетевого программирования с точки зрения разработчиков игр, управлении игрой через передачу данных, сетевых обновлениях, обеспечении надежной работы и научитесь создавать безопасный и масштабируемый код. Не останутся без внимания игровые сервисы и облачные технологии.
Эта книга пригодится всем кто хочет узнать, как создаются сетевые игры.
#book #gamedev
Глейзер Д., Мадхав С.
Сетевые многопользовательские игры - это многомиллиардный бизнес, привлекающий десятки миллионов игроков. Эта книга на реальных примерах рассказывает об особенностях разработки таких игр и основах построения надежной многопользовательской архитектуры.
Вы узнаете об основах сетевого программирования с точки зрения разработчиков игр, управлении игрой через передачу данных, сетевых обновлениях, обеспечении надежной работы и научитесь создавать безопасный и масштабируемый код. Не останутся без внимания игровые сервисы и облачные технологии.
Эта книга пригодится всем кто хочет узнать, как создаются сетевые игры.
#book #gamedev
Вести свой блог, конечно, тяжело. На это нужно много времени.
Но я все равно постараюсь выкладывать интересные вещи, которые будут полезны. Сегодня это понятие Bus Factor - мера сосредоточения информации среди отдельных членов проекта; фактор означает количество участников проекта, после потери которых (в оригинале — «попадания» которых под автобус или грузовик, варианты: увольнения, заболевания, рождения ребёнка, несчастного случая и других форс-мажорных обстоятельств) проект не сможет быть завершён оставшимися участниками.
Но я все равно постараюсь выкладывать интересные вещи, которые будут полезны. Сегодня это понятие Bus Factor - мера сосредоточения информации среди отдельных членов проекта; фактор означает количество участников проекта, после потери которых (в оригинале — «попадания» которых под автобус или грузовик, варианты: увольнения, заболевания, рождения ребёнка, несчастного случая и других форс-мажорных обстоятельств) проект не сможет быть завершён оставшимися участниками.
Wikipedia
Bus factor
measurement of the risk of losing key experts on a team