Pull to refresh
0
0
Send message

Сложнейшая проблема компьютерных наук: центрирование

Level of difficultyMedium
Reading time7 min
Views34K

Заявляю: «Мы, как цивилизация, разучились использовать центрирование». Ну то есть мы, конечно, знаем, как это делать — очень просто:

display: flex;
justify-content: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Не спрашивайте, почему вам нужно запомнить четыре слова вместо просто горизонтальное/вертикальное; всё равно лучше, чем было до этого.

Ещё можно использовать сетку:

display: grid;
justify-items: center; /* Горизонтальное центрирование */
align-items: center; /* Вертикальное центрирование */

Также не спрашивайте, почему выражение justify-content стало justify-items.
Читать дальше →
Total votes 194: ↑189 and ↓5+227
Comments56

Сосульки на свесах скатной кровли: механизм образования и методы борьбы с ними

Reading time24 min
Views12K

Островерхая скатная и плоская крыша дома в ИЖС: Битва архаично-романтичного  «дизайна» с инженерной рациональностью.

Крыша дома в частном секторе- это не только инженерное сооружение, но и главный элемент внешнего вида здания в целом.

Если учесть, что частный дом в значительной степени строят ради «показать себя», то его крыша становится скорее ярмаркой тщеславия, чем ответственной инженерной конструкцией. (см.рис.1.)

Читать далее
Total votes 48: ↑40 and ↓8+42
Comments153

Создание .NET библиотеки от А до Я

Level of difficultyMedium
Reading time32 min
Views18K

Думаете о создании .NET библиотеки, но не знаете, в какую сторону двигаться? Уже разрабатываете нечто подобное, но хочется открыть для себя что-то новое? Ищете варианты расширить автоматизацию? Не знаете, что делать с пользователями?

Надеюсь, данная статья поможет ответить на эти и другие вопросы. На примере своей библиотеки с открытым исходным кодом – DryWetMIDI – рассмотрим различные аспекты создания подобных проектов. И хотя речь будет идти про .NET/C#, уверен, многое применимо и к другим популярным платформам и языкам программирования.

Читать далее
Total votes 42: ↑41 and ↓1+51
Comments13

Фонетические алгоритмы

Reading time9 min
Views45K
Фонетические алгоритмы сопоставляют двум словам со схожим произношением одинаковые коды, что позволяет осуществлять сравнение и индексацию множества таких слов на основе их фонетического сходства.

Часто довольно трудно найти в базе нетипичную фамилию, например:
— Леха, поищи в нашей базе Адольфа Швардсенеггера,
Шворцинегира? Нет такого!
В этом случае использование фонетических алгоритмов (особенно в сочетании с алгоритмами нечеткого сопоставления) может значительно упростить задачу.

Такие алгоритмы очень удобно использовать при поиске в базах по спискам людей, в программах проверки орфографии. Зачастую они используются совместно с алгоритмами нечеткого поиска (которые, несомненно, заслуживают отдельной статьи), предоставляя пользователям удобный поиск по именам и фамилиям в различных базах данных, списках сотрудников и так далее.

В этой статье я рассмотрю наиболее известные алгоритмы, такие как Soundex, Daitch-Mokotoff Soundex, NYSIIS, Metaphone, Double Metaphone, русский Metaphone, Caverphone.
Читать дальше →
Total votes 154: ↑153 and ↓1+152
Comments35

Materialized Path – создаём своё первое дерево

Reading time18 min
Views7.9K

Всем привет! Меня зовут Хусрав, я бэкенд разработчик в компании Bimeister.

В этой статье я бы хотел бы поговорить о способе поиска родительских и дочерних элементов структуры посредством PostgreSQL Materialized Path.

Статья является вводной и рассчитана на людей, незнакомых с темой.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments0

Почему для открытия меню Windows читает один файл сто тысяч раз?

Reading time4 min
Views157K

«Проводник тратит 700 мс на то, чтобы открыть контекстное меню панели задач. 75% этого времени он выполняет 114 801 операцию считывания из одного файла, средний объём считываемых данных 68 байт.

Мне стоит написать пост об этом, или достаточно саркастичного твита?»


За компьютером я работаю быстро, и поэтому меня раздражает, когда приходится ждать завершения операции, которая должна выполняться мгновенно. Постоянной помехой на моём сверхмощном домашнем ноутбуке стало медленное закрывание окон на панели задач. Я нажимаю правой клавишей на значок, жду, пока откроется меню, а затем выбираю «Закрыть окно». Самым медленным в этом процессе должны быть перемещения мыши, но выясняется, что наиболее долгим компонентом оказывается задержка перед появлением меню.

Это напрягало меня уже давно, но я проявлял нехарактерный мне самоконтроль и удерживался от раздражения. Так было до сегодняшнего дня, когда я наконец сорвался и схватился за трассировщик ETW.

Этот пост написан как проверка скоростного блогинга. От момента нахождения проблемы и саркастичного твита о ней до публикации поста прошло примерно 90 минут.
Читать дальше →
Total votes 195: ↑189 and ↓6+183
Comments591

Собственный голосовой помощник off-line

Reading time12 min
Views14K

Microphone вектор создан(а) storyset - ru.freepik.com

Никогда не был любителем голосового интерфейса, но пробовал дома и Amazon Echo, и Алису. Все-таки очень долго это и недостаточно надежно - произносить фразу и думать потом - правильно ли меня поняли и всё ли сделано, как я хотел.
Но после прочтения статьи и, главное, обсуждений после нее я пришел к выводу, что есть варианты, когда это правда удобно. Собственно, самым ярким мне показался пример с кухонным таймером - не хочется грязными руками что-то трогать - голосовой интерфейс тут идеален. А попробовав приложение и почитав код коллеги @janvarev я понял, что современные средства распознавания уже вышли на очень приличный уровень и легко подключаются в проекты с открытым кодом. Дальше стало интересно сделать что-то более удобное и более стабильно работающее (без обид, но проект "Ирина" у меня не весь заработал при вменяемых затратах времени и настроек там меньше, чем мне хотелось бы).

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments8

48 полноценных бесплатных книг для программистов (happy developer's day)

Reading time2 min
Views109K

Привет, Хабр! Немного запоздало (ко дню программиста) делюсь подборкой бесплатных книг по программированию. Все они полезные, уровень скорее профессиональный, хотя и для развития от базового тоже подойдет, но, к сожалению, на английском. Среди тем книг: .NET, Алгоритмы, Android, iOS, Angular, C, C++, C#, JS, Linux, Python. В целом, найдется почти любая тема, которая приходит в голову.

Дисклеймер. Все эти книги взяты с одного ресурса, который существует за счет донейшенов. Получить книги можно без осуществления донейшенов, ресурс полностью бесплатный, пожертвования опциональны. Все книги написаны на основе контента со StackOverflow и являются код-ориентированными. Книги со временем обновляются. По ссылкам -- книги, актуальные на 15.09.2021.

Читать далее
Total votes 83: ↑82 and ↓1+98
Comments55

Outer Join в LINQ

Reading time6 min
Views16K
Коментарий автора: Статья написана в 2012 году и пролежавшая 8 лет в песочнице.

LINQ — как много было придумано в C# лишь для того чтобы мы могли наслаждаться прелестями Language Integrated Query. А именно:

  • Generics
  • Extension Methods
  • Lamda expressions
  • Expression trees
  • Anonymous types
  • Object initializers
  • Type inferring

И это все чтобы мы могли написать нечто вроде такого:

	var query = 
		from itemA in listA
		join itemB in listB
			on itemA.Key equals itemB.Key
		select new {itemA, itemB};
	

Нельзя не согласиться — впечталяет.

И среди всего этого синтаксического сахара была ложка дегдя которая мне не давала нормально выспаться :)

Это тотальное отсутствие поддержки OUTER JOIN. Но как оказалось деготь с легкостью превращается… превращается… превращается…
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments6

7 лучших библиотек для создания молниеносно быстрых приложений ReactJS

Reading time6 min
Views19K

ReactJS по умолчанию обладает высокой производительностью. Но время от времени у вас появляется шанс сделать его еще лучше. И замечательное сообщество React придумало для этого несколько фантастических библиотек.

Сегодня мы поговорим о семи таких библиотеках, которые могут улучшить качество вашего кода и при этом повысить производительность.

Давайте начнем.   

.     .     .

Читать далее
Total votes 16: ↑12 and ↓4+8
Comments6

Управляем контактами GPIO из C# .NET 5 в Linux на одноплатном компьютере Banana Pi M64 (ARM64) и Cubietruck (ARM32)

Reading time27 min
Views19K
dotnet libgpiod

Когда заходит речь про программирование на C# .NET для одноплатных компьютеров, то разговоры крутятся только в основном вокруг Raspberry Pi на Windows IoT. А как же Banana/Orange/Rock/Nano Pi, Odroid, Pine64 и другие китайские одноплатные компьютеры работающие на Linux? Так давайте это исправим, установим .NET 5 на Banana Pi BPI-M64 (ARM64) и Cubietruck (ARM32), и будем управлять контактами GPIO из C# в Linux. В первой части серии постов, подключим светодиод и кнопку для отработки прерываний и рассмотрим библиотеку Libgpiod (спойлер, библиотеку так же можно использовать в C++, Python) для доступа к контактам GPIO.
Total votes 26: ↑24 and ↓2+33
Comments10

25 актуальных вопросов работодателю + комментарии разработчика

Reading time4 min
Views11K

Выяснить, что вы не совпадаете с компанией по целям и ценностям иногда удаётся не сразу: что-то вскрывается уже спустя несколько месяцев, как случилось у нашего героя Антона, Python-разработчика, на прошлом месте работы. Казалось бы, почему? Вы — хороший инженер, нанимающий менеджер — человек с большим опытом собеседований за плечами. У двух умных людей не должно возникнуть проблем при общении друг с другом. Но времени мало, а на подробные расспросы не всегда есть силы. К тому же иногда люди склонны — как, впрочем, и на свидании — показывать при первой встрече только лучшее.


Мы опросили знакомых IT-специалистов, разработчиков и тимлидов, как проверить компанию во время собеседования. Собрали каверзные вопросы, на которые нельзя отделаться стандартной отговоркой — надеемся, они вам пригодятся. Список не может быть полным: каждый ищет свою работу мечты, к тому же удалёнка вносит коррективы :) Поэтому добавляйте свои варианты в комментарии! Кстати, есть хорошая идея — задавать эти вопросы разным интервьюерам и сравнивать ответы.




Читать дальше →
Total votes 15: ↑9 and ↓6+3
Comments3

Устройство поисковых систем: базовый поиск и инвертированный индекс

Reading time24 min
Views28K

Под капотом почти каждой поисковой строки бьется одно и то же пламенное сердце — инвертированный индекс. Именно инвертированный индекс принимает текстовые запросы и возвращает пользователю список документов, а пользователь смотрит на всё это дело и радуется котиками, ответам с StackOverflow и страничкам на вики.

В статье описано устройство поиска, инвертированного индекса и его оптимизаций с отсылками к теории. В качестве подопытного кролика взят Tantivy — реализация архитектуры Lucene на Rust. Статья получилась концентрированной, математикосодержащей и несовместимой с расслабленным чтением хабра за чашкой кофе, осторожно!
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments6

Представьте — вам дали гору денег, но забрали программирование навсегда. Обрадуетесь? Что будете делать?

Reading time6 min
Views79K

Моя бабушка пришла работать на фабрику когда ей не было и двадцати. Она ходила к станку каждый день, сорок лет, от звонка до звонка — в прямом смысле. Мой дед — в точности так же — устроился шофером, когда еще был пацаном, и водил свой грузовик каждый день по одному маршруту до самой пенсии. Та же история была у мамы, и была бы у отца — не закрой его завод в 90-е. 

Когда я об этом думаю, меня съедает чернющая тоска — я все никак не успеваю стать достаточно богатым, чтобы разорвать порочный круг “работать чтобы есть чтобы дальше работать” и дать им жизнь, которую сам считаю счастливой.

Раньше я был уверен, что должен это сделать, но теперь еще больше запутался. Мне уже не кажется, что они несчастны в своем образе жизни. Они точно работают не ради денег, не ради того, чтобы куда-то вырваться, и никогда не работали только ради этого.

Теперь мне кажется — что это я на самом деле несчастен.

Читать далее
Total votes 148: ↑126 and ↓22+140
Comments462

Разрабы работают медленно и дорого — и люди считают нас лентяями. Просто в разработке всё сложно

Reading time7 min
Views75K

— Люди не из индустрии вечно не понимают программистов: что они там такое сложное делают, если видно только две кнопки? Что за непонятные слова говорят? Почему так много получают?


Вместе с парнями из подкаста «Мы обречены» решили с этим разобраться и запустили совместную рубрику, где будем объяснять, почему в разработке всё так сложно. А для тех, кто любит читать, а не слушать, парни написали эту статью.


Читать дальше →
Total votes 188: ↑152 and ↓36+147
Comments533

Git Rebase: руководство по использованию

Reading time8 min
Views822K
Rebase — один из двух способов объединить изменения, сделанные в одной ветке, с другой веткой. Начинающие и даже опытные пользователи git иногда испытывают нежелание пользоваться ей, так как не видят смысла осваивать еще один способ объединять изменения, когда уже и так прекрасно владеют операцией merge. В этой статье я бы хотел подробно разобрать теорию и практику использования rebase.

Теория


Итак, освежим теоретические знания о том, что же такое rebase. Для начала вкратце — у вас есть две ветки — master и feature, обе локальные, feature была создана от master в состоянии A и содержит в себе коммиты C, D и E. В ветку master после отделения от нее ветки feature был сделан 1 коммит B.


Читать дальше →
Total votes 122: ↑121 and ↓1+120
Comments169

Анти-паттерны Test Driven Development

Reading time4 min
Views19K
Я надеюсь, что как грамотный разрабочик, вы имеете представление о unit-тестировании и сделаете себе в голове пару мысленных отметок о том, чего надо избегать при написании тестов. Знакомьтесь:

Лжец (The Liar)

Unit-тест, который успешно выполняет все кейсы и выглядит работающим правильно, однако при более детальном рассмотрении обнаруживается, что он на самом деле не тестирует то, что должен.

Читать дальше →
Total votes 111: ↑109 and ↓2+107
Comments64

Где в России убивают больше всего? Анализ данных

Reading time7 min
Views46K
Привет, Хабр.

Меня зовут Алексей Кнорре, и я криминолог, аспирант в UPenn и аффилированный научный сотрудник в ЕУСПб. Подумал, что сейчас, после месяцев карантина, самое время рассказать о преступности. Неясная экономическая ситуация, рост безработицы, ухудшение общественного здоровья — все это вызывает опасения в завтрашнем дне. Что будет с преступностью в России? Как криминолог, я использую статистические методы и программирование для того, чтобы эмпирически исследовать преступность, поэтому я постоянно работаю с данными, о которых сегодня и хотел бы рассказать доступным языком. На Хабре было всего два поста по тегу «криминология», поэтому надеюсь, мой рассказ будет интересным.

Кто-то из вас мог видеть в прошлом году рейтинг безопасности городов России. Как собирали данные о безопасности: вроде бы был опрос жителей, но сколько человек опросили? Не было ли в выборке систематических смещений, как если бы опрашивали только жителей больших многоквартирных домов? Насколько вообще люди могут точно сказать, что в их городе в целом безопасно? Безопасно по сравнению с чем, и как эту безопасность измерить? А вдруг анкетный опрос отражает больше общественные настроения, нежели реальную преступность — вероятность случайного нападения на улице, грабежа или кражи?

В науке преступность измеряют разными способами. Два года назад мы с коллегами, например, провели первый в России репрезентативный виктимизационный опрос, обзвонив 16 тыс. человек. Данные мы открыли для общего пользования. Основной вывод — уровень реальной преступности где-то в 8 раз выше регистрируемой правоохранительными органами. Вот визуализация процесса от Марии Бублик и Натальи Тогановой, вошедшая в шорт-лист премии Information is Beautiful — 2019.


Читать дальше →
Total votes 35: ↑33 and ↓2+47
Comments41

Мне надоело, что обычные продавцы выдают себя за разработчиков и позорят индустрию. Они делают мир хуже

Reading time5 min
Views123K


Когда Дудь выпустил ролик про долину, я очень сильно расстроился. Я ещё не знал, про что он конкретно, но мозг моментально нарисовал: манерные успешные успехи говорят про преодолевание, дух предпринимательства, поднятые миллионы баксов, и как сильно их говноприложенька влияет на мир.

Тогда я подумал — надо посмотреть, осудить и бахнуть статью. Про то, что Дудь засранец, а в настоящей разработке все по-другому. Прошло уже месяца два, но я так и не смог заставить себя это посмотреть.

Мои новостные ленты были завалены обсуждениями, восхищением и критикой выпуска. Каждый раз читая что-то об этом, я испытывал непонятную почти физическую боль. Ну хорошо, главный журналист страны рассказал про мою индустрию, но рассказал не так, как хочу я. С этим можно жить. Да, со всей своей преисполненностью и трушной технарскостью, я все ещё маленький завистливый чмошник. Я тоже хочу сидеть в кофейне в Пало-Альто и смотреть, как мне выписывают чек на пять миллионов долларов. Но смотрите, я вырос в России и давно научился не обращать внимания на свою патологическую зависть. Мне давно не бывает от нее больно.

Бомбанул я точно не от зависти — и я долго не знал, почему.
Читать дальше →
Total votes 352: ↑263 and ↓89+245
Comments970
1
23 ...

Information

Rating
Does not participate
Registered
Activity