Как стать автором
Обновить
13
0
Александр Зеленин @aleksandr-s-zelenin

Характер — нордический, стойкий.

Отправить сообщение

11 полезных фичей Chrome DevTools

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров11K

Всем привет!

Все мы постоянно используем Chrome DevTools, но там так много фичей, что некоторые из них мы никогда не использовали и даже не замечали. В этой небольшой статье, я хочу поделиться интересными находками, которыми пользуюсь сам.

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

Погнали!

Погнали!
Всего голосов 21: ↑21 и ↓0+21
Комментарии2

Проблемы современного программного обеспечения — невозможность отключения «ненужного функционала»

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров32K

Никогда не задумывались почему тормозит компьютер? Дело ли в «плохой оптимизации» современного софта? Ведь Когда Photoshop отъедает 8 гигабайт только при запуске, Google Chrome создает свыше 10 процессов, а Telegram пытается превратиться в Instagram, невольно начинаешь задумываться, что «где-то мы свернули не туда».

Версия статья не от дилетанта, с более близкими для хабра примерами… лежит здесь!

Читать далее
Всего голосов 76: ↑69 и ↓7+69
Комментарии299

Деградация программного обеспечения

Время на прочтение4 мин
Количество просмотров43K
В книге «Электромагнитная эпоха: работа, любовь и жизнь, когда роботы правят миром» Робин Хэнсон кратко обсуждает деградацию программ:

Программное обеспечение изначально было разработано для одного набора задач, инструментов и ситуаций. Но оно медленно изменяется, чтобы справиться с постоянным потоком новых задач, инструментов и ситуаций. Такой софт становится более сложным, хрупким, в него труднее вносить полезные изменения (Леман и Биледи, 1985)1. В конце концов, лучше начать всё сначала и написать с нуля новые подсистемы, а иногда и полностью новые системы.

Я уверен, что это правда. Как правило, грамотная адаптация программного обеспечения к новым условиям занимает больше времени и усилий, чем написание нового программного обеспечения с нуля. Программисты не любят признавать это, но доказательства очевидны. В проектах open source есть несколько известных примеров.
Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии157

Почему распознавание краёв не объясняет линейного рисунка

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров5.1K

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

Классический ответ на этот вопрос — та гипотеза, которую я буду называть Lines-As-Edges. Она гласит, что рисунки симулируют естественные образы, потому что признаки линий активируют рецепторы краёв в зрительной системе человека. Насколько я могу судить, такое убеждение широко распространено в среде исследователей зрения; многие люди вспоминают эту гипотезу, когда я говорю о восприятии рисунков, а также многие комментаторы под недавним постом в Twitter. Обобщением этой идеи становится то, что линии соответствуют некому внутреннему представлению, заставляющему нейроны реагировать на контуры объектов. Я называю эту гипотезу Line-As-Internal-Representation и расскажу о ней в этой статье.

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии5

Сам написал, сам поиграл: как я написал 2D-игру для Android полностью с нуля, весом менее 1мб?

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров19K
image

Многие программисты так или иначе имеют тягу и интерес к разработке игр. Немалое количество спецов было замечено за написанием маленьких и миленьких игрушек, которые были разработаны за короткое время «just for fun». Большинству разработчиков за счастье взять готовый игровой движок по типу Unity/UE и попытаться создать что-то своё с их помощью, особенно упорные изучают и пытаются что-то сделать в экзотических движках типа Godot/Urho, а совсем прожжённые ребята любят писать игрушки… с нуля. Таковым любителем писать все сам оказался и я. И в один день мне просто захотелось написать что-нибудь прикольное, мобильное и обязательно — двадэшное! В этой статье вы узнаете про: написание производительного 2D-рендерера с нуля на базе OpenGL ES, обработку «сырого» ввода в мобильных играх, организацию архитектуры и игровой логики и адаптация игры под любые устройства. Интересно? Тогда жду вас в статье!
Читать дальше →
Всего голосов 56: ↑55 и ↓1+71
Комментарии54

Я вижу как ты мусоришь со своего балкона

Время на прочтение9 мин
Количество просмотров53K

Вот выходишь ты утром на работу, а на газоне перед домом окурки и прочие отходы жизнедеятельности. Бывает, что приходишь домой, а у тебя на балконе пепел или даже окурок. Как же хочется понять, кто это сделал! Я вот терпеть не могу таких людей. Моя история о том, как найти вредителей и, возможно, сделать свой дом немного чище и безопаснее.

Читать далее
Всего голосов 197: ↑191 и ↓6+244
Комментарии319

Лучший софт для автоматизации скриншотов

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров27K
Такие скриншоты присылала Таня

У нас была знакомая девушка Таня (имя изменено), которая делала скриншоты ПК только смартфоном. То есть фотографировала экран — и присылала сделанную фотографию. Всё с телефончика, очень удобно…

В то же время есть масса эффективных инструментов для сохранения копии экрана каждую секунду или минуту, хранения архива, поиска по нему, автоматического копирования на удалённый хостинг и т. д.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии61

Как загружается процессор Intel x86

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров20K
image

Когда мы включаем компьютер, он успевает совершить несколько этапов работы ещё до того, как загрузится операционная система. В этом посте будет рассмотрено, как загружается типичный процессор с архитектурой x86. Это очень сложный и многоступенчатый процесс. Здесь его структура будет представлена только в самом общем виде. От загрузочной прошивки зависит, каким именно путём процессор придёт к тому состоянию, в котором сможет загрузить операционную систему. Мы проследим этот процесс на примере опенсорсной загрузочной прошивки coreboot.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+40
Комментарии21

Дрессируем MacBook для работы с внешним монитором

Время на прочтение3 мин
Количество просмотров155K
Покупая внешний монитор для свего MacBook Pro 13" я не мог предполагать что придется столкнуться с некоторыми неудобствами в ежедневной работе. Моим желанием было получить систему, в которой внешний монитор является основным и единственным, а дисплей ноутбука при этом выключен. Отягчающим обстоятельством был тот факт, что внешней клавиатуры у меня пока нет и для работы хотелось использовать клавиатуру ноутбука. Это значит что закрыть MacBook с целью выключить его дисплей не получится.
Перед покупкой монитора изучением возможностей работы MacBook с внешними дисплеями я пренебрег, потому как был убежден, что дело обстоит ровно так же хорошо как и у других портативных компьютеров. Другими словами, был уверен, что MacBook поддерживает полный набор режимов работы с внешними дисплеями, позволяя привычно переключаться между режимами с помощью комбинации клавиш (Fn+F5 или подобной). Но не тут-то было.
Читать дальше →
Всего голосов 47: ↑31 и ↓16+15
Комментарии130

10 самых влиятельных (и почти мёртвых) языков программирования

Время на прочтение13 мин
Количество просмотров50K

Гиллель Уэйн*, разработчик и консультант по формальной верификации, обратил внимание на статью «20 наиболее значимых языков программирования в истории», которую сам автор называет «нелепой, только что придуманной таблицей». По мнению Уэйна, эта характеристика вполне справедлива: автор таблицы называет Go «наиболее значимым», но не включает в список ALGOL, Smalltalk или ML. И не учитывает Pascal, потому что тот «почти мёртв». Абсурд! Это противоречит всей сути понятия «значимость в истории».

Так давайте обсудим некоторые «почти мёртвые» языки и причины их важности.

Дисклеймер: Да, не все из этих языков мертвы и забыты. Ведь большинство людей слышали о Smalltalk, правда? Также, скорее всего, в этой статье полно ошибок, ведь их легко допустить, когда вы анализируете 60-летнюю историю компьютерных вычислений. Не стесняйтесь возражать, если что-то заметите!

Дисклеймер 2: Да, некоторые из упомянутых здесь языков были «первыми изобретёнными», а другие — «первыми популярными». История — это сложно!

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Всего голосов 107: ↑104 и ↓3+120
Комментарии469

Книги, которые можно рекомендовать любому программисту: от «Карьеры программиста» до «Математических алгоритмов»

Время на прочтение4 мин
Количество просмотров19K

Привет, Хабр! Сегодня хотим представить подборку книг, которые было бы полезно прочитать любому программисту. Многие из них, вероятно, вами уже прочитаны, но если нет, рекомендуем ознакомиться. В подборке 7 книг — конечно, это субъективный выбор. Но если у вас есть любимые книги по разработке, которые вы можете рекомендовать, расскажите о них в комментариях, пожалуйста.

Читать далее
Всего голосов 12: ↑9 и ↓3+13
Комментарии13

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров20K
image

Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!
Читать дальше →
Всего голосов 81: ↑80 и ↓1+91
Комментарии38

ENTRYPOINT vs CMD: назад к основам

Время на прочтение6 мин
Количество просмотров284K

Construction


Название ENTRYPOINT всегда меня смущало. Это название подразумевает, что каждый контейнер должен иметь определенную инструкцию ENTRYPOINT. Но после прочтения официальной документации я понял, что это не соответствует действительности.

Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии17

Зарплатные вилки весной 2023: языки программирования и фреймворки

Время на прочтение15 мин
Количество просмотров125K

Мы на Хабр Карьере регулярно анализируем зарплаты IT-специалистов: по полугодиям, в разрезе специализаций, квалификаций, городов, компаний, языков программирования и т.д. В этом году мы решили попробовать собрать новый срез и посмотреть на зарплатный рынок со стороны работодателя.

Проанализировали все вакансии, а потом посмотрели предложения только для разработчиков на Хабр Карьере и разобрались, какие языки и фреймворки были популярны этой весной и какие зарплатные вилки предлагали в них работодатели.

Читать далее
Всего голосов 35: ↑33 и ↓2+50
Комментарии80

Cron — лучшие практики

Время на прочтение9 мин
Количество просмотров63K

Планировщик задач cron(8) существует с 7 версии Unix, а его синтаксис crontab(5) знаком даже тем, кто нечасто сталкивается с системным администрированием Unix. Это стандартизированный, довольно гибкий, простой в настройке и надёжно работающий планировщик, которому пользователи и системные пакеты доверяют управление важными задачами. Материалом о лучших практиках работы с cron делимся к старту курса по Fullstack-разработке на Python.

Читать далее
Всего голосов 38: ↑35 и ↓3+35
Комментарии45

Я бы пересмотрел вообще всё

Время на прочтение4 мин
Количество просмотров77K

В программировании нет вообще никаких непреложных истин. Даже самые очевидные правила могут иметь контекст, в которых их применять нельзя. К сожалению в 99% организаций есть прям заповеди, обязательные к исполнению. И есть правила, которые считаются правилами хорошего тона (как не сморкаться в занавеску). Однако всегда бывают ситуации, когда лучше все-таки сморкаться.


Вот примеры.


1) Например, DRY — don’t repeat yourself. Хорошее полезное правило, но его можно довести до маразма. Из того что я встречал на практике: есть два разных по бизнес-смыслу раздела, которые начинались с простого CRUD, и многие части (и фронта и бека) выглядели во многом абсолютно одинаково. Если их объединить с помощью общей высосанной из пальца абстракции и тем самым избавиться от небольшого дублирования кода, то потом (очень скоро) можно будет сойти с ума, потому что эти две вещи скоро разъедутся, обрастая кастомными фичами, и абстракция будет только вредить. Нельзя абстрагировать неабстрагуемое, даже если DRY нарушен.


«[Немного] дублирования обходится гораздо дешевле, чем неправильная абстракция» — Сэнди Мец

Т.е. DRY — хороший принцип, но бывают исключения.

Читать дальше →
Всего голосов 215: ↑173 и ↓42+177
Комментарии346

PopStick: одноплатный ПК на Linux в формфакторе флешки за $29. Что он умеет?

Время на прочтение3 мин
Количество просмотров29K
image

Компания Popcorn Computer представила свою новую разработку — одноплатный ПК PopStick. Его формфактор похож на флешку, а сам девайс полностью открытый, включая как софт, так и «железо». Конечно, рекордов производительности он не бьет, но для определенных задач это отличный вариант. Стоимость девайса при этом — всего $29. Подробности — под катом.
Читать дальше →
Всего голосов 49: ↑42 и ↓7+46
Комментарии60

Визуализация реальных масштабов проклятия размерности

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров6.5K

Представьте себе набор данных, состоящий из некоторого количества наблюдений. У каждого наблюдения имеется N признаков. Если преобразовать все эти признаки в их числовое представление, то можно будет сказать, что каждое из наблюдений — это точка в N‑мерном пространстве.

Если N — величина небольшая — взаимоотношения между точками будут именно такими, какими их можно представить на интуитивном уровне. Но иногда N достигает огромных значений. Это может произойти, например, когда множество признаков создают посредством прямого кодирования или чего‑то подобного. Для очень больших значений N наблюдения ведут себя так, как если бы они были бы представлены разреженными данными, или так, как если бы расстояния между ними были бы несколько больше, чем можно было бы ожидать.

Это — реальное явление. По мере роста N, при условии, что всё остальное не меняется, объём части N‑мерного пространства, содержащий наблюдения, тоже, в некотором смысле, увеличивается (или, как минимум, увеличивается количество степеней свободы). Увеличиваются и евклидовы расстояния между наблюдениями. Группа точек становится всё более разреженной структурой. Это — геометрическая база для такого понятия, как «проклятие размерности». Подобные изменения в данных влияют на поведение моделей и на приёмы работы, применяемые к наборам данных.

Многое может пойти не так, как ожидается в том случае, если число признаков очень велико. В ситуациях, когда признаков больше, чем наблюдений, обычно возникает переобучение моделей. В многомерном пространстве ухудшается эффективность любых методов, предусматривающих перебор данных (например — GridSearch), так как для того, чтобы уложиться в одни и те же линейные интервалы, нужно будет сделать больше попыток.

Читать далее
Всего голосов 32: ↑32 и ↓0+32
Комментарии5

Распознавание номерных знаков. Как все ускорить

Время на прочтение8 мин
Количество просмотров18K
Nomeroff Net. Как ускорить распознавние номерных знаков.

После запуска моделей на прод рано или поздно приходит понимание того, что Ваши сервисы популярны и что KPI растут. Вместе с популярностью приходят тормоза и нестабильность. В этой статье речь пойдет о прикладном аспекте оптимизации быстродействия алгоритмов/моделей на примере движка распознавания автомобильных номеров “Nomeroff Net”. Буду делиться опытом, полученным на протяжении 2-х летней разработки. Если коротко: нам удалось ускорить время распознавания 1 фото более чем в 10 раз.

“Чел догадался в свой сервер вставить RTX 3090” подумаете Вы… Приблизительно так и было, только если взять замеры до установки GPU то все ускорили в 100+ раз :).
Не будет детального описания архитектуры моделей (они давно известны в узких кругах), хочу поделиться важными моментами, на которые стоит обратить внимание при оптимизации ваших ML-сервисов.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии12

Тюнинг nginx

Время на прочтение8 мин
Количество просмотров96K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

Читать дальше →
Всего голосов 102: ↑100 и ↓2+98
Комментарии69

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer