https://habr.com/ru/post/103467/
Очень простое объясненния парадигмы MapReduce.
Если хочется понять основу того, как делают расчеты больших объемов данных - смотреть в статью!
Очень простое объясненния парадигмы MapReduce.
Если хочется понять основу того, как делают расчеты больших объемов данных - смотреть в статью!
Хабр
MapReduce или подсчеты за пределами возможностей памяти и процессора (попробую без зауми)
Давно хотел рассказать про MapReduce, а то как ни взгляшешь на подобное — такая заумь, что просто ужас берет, а на самом деле очень простой и полезный подход для...
Алгоритмы поиска подстроки в строке:
Алгоритм Кнута-Морриса-Пратта. Сложность O(N+M)
Алгоритм Бойера-Мура-Хорспула. Сложность O(M/|E|)
Алгоритм Кнута-Морриса-Пратта. Сложность O(N+M)
Алгоритм Бойера-Мура-Хорспула. Сложность O(M/|E|)
YouTube
Алгоритм Кнута-Морриса-Пратта
Алгоритм Кнута-Морриса-Пратта (алгоритм КМП) - это один из классических алгоритмов поиска образа в строке или, проще говоря, поиска слова или фразы в тексте. Эффективность алгоритма проявляется при частичном совпадении символов образа и строки. В этом случае…
Показательный пример (по мотивам статьи):
Человек, очень сильно интересующийся парсером питона, создал патч, который уменьшает потребление памяти парсера на 30%. Очень клево, да? Правда, изменений очень много.
Но за полгода этот патч никто так и не поревьювил. А в конце еще и Гвидо ван Россум резюмировал:
"Python's parser wasn't designed to *efficiently* parse huge data tables like that, and if you have that much data, using JSON is the right answer.... Sometimes a change is just not worth the effort."
Мне кажется отличный пример прагматичности, так иногда мы делаем кучу больших, опасных изменений, которые не двигают проект вперед, а служат скорее некой ачивкой для разработчика.
Человек, очень сильно интересующийся парсером питона, создал патч, который уменьшает потребление памяти парсера на 30%. Очень клево, да? Правда, изменений очень много.
Но за полгода этот патч никто так и не поревьювил. А в конце еще и Гвидо ван Россум резюмировал:
"Python's parser wasn't designed to *efficiently* parse huge data tables like that, and if you have that much data, using JSON is the right answer.... Sometimes a change is just not worth the effort."
Мне кажется отличный пример прагматичности, так иногда мы делаем кучу больших, опасных изменений, которые не двигают проект вперед, а служат скорее некой ачивкой для разработчика.
Хабр
Как устроен парсер Python, и как втрое уменьшить потребление им памяти
Любой, кто изучал устройство языков программирования, примерно представляет, как они работают: парсер в соответствии с формальной грамматикой ЯП превращает входн...
Очень часто в проектах вижу использование оператора:
Все бы хорошо, но почти везде его используют для операндов с типом
в С++ нет, поэтому делают такой "хак".
Но нужно понимать. что замена не релевантная и при смене типа у
x &= y
Все бы хорошо, но почти везде его используют для операндов с типом
bool
. Cкорей всего лень писать:x = x && y
, а оператора x &&= y
, как известно,в С++ нет, поэтому делают такой "хак".
Но нужно понимать. что замена не релевантная и при смене типа у
x
или y
- команда будет работать не так, как вы ожидаете.Неожиданно осознал, что в нашем проекте практически никто не использует namedtuple, а это чертовски удобная вещь и часто помогает значительно сократить объем копипасты!
Хабр
Именованные кортежи. Пишем код на Python чище
В стандартной библиотеке питона содержится специализированный тип "namedtuple", который, кажется, не получает того внимания, которое он заслуживает. Это одна из...
Немного про стремные хаки, которые работают:
В проекте 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.