Pull to refresh
52
1.4
Send message

Выбираем длинный путь (или прощай MAX_PATH)

Reading time4 min
Views74K


Многим пользователям ПК под управлением ОС Windows, не говоря о разработчиках, знакомы проблемы при работе с длинными (более 260 символов, MAX_PATH) путями файлов или каталогов.

В данной статье рассматриваются способы избавления от этого пережитка при разработке приложений на различных платформах (WinApi, .Net Framework, .Net Core) и активации нативной поддержки длинных путей в Windows 10 (Anniversary Update).
Подробности
Total votes 37: ↑34 and ↓3+31
Comments22

Троян в CS-Cart. Утечка счетов из 35'000 интернет-магазинов

Reading time3 min
Views10K

TL;DR: Разрабы второго по популярности (по версии ratingruneta) интернет-магазина встроили в движок код, который делает копии всех счетов клиентов на сервер в Аризоне.

Читать далее
Total votes 23: ↑11 and ↓12+3
Comments28

Приручение nRF пульта для ПК с потерянным приемником

Reading time10 min
Views8.1K

В этой статье я расскажу, как мне удалось заставить работать nRF пульты для ПК, для которых были утеряны приемники. Не обошлось без Arduino, множества попыток бросить это дело, долгого безуспешного гугления, радости маленьким победам, разочарования от неудач и наконец новой жизни для nRF пульта, но обо всем по порядку...

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

Детальная настройка браузера Firefox

Reading time15 min
Views121K

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

Надеюсь она немножко поможет в популяризации этого чудесного браузера.

Читать далее
Total votes 43: ↑40 and ↓3+47
Comments96

Интересные алгоритмы кластеризации, часть вторая: DBSCAN

Reading time10 min
Views94K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

Углубимся ещё немного в малохоженные дебри Data Science. Сегодня в очереди на препарацию алгоритм кластеризации DBSCAN. Прошу под кат людей, которые сталкивались или собираются столкнуться с кластеризацией данных, в которых встречаются сгустки произвольной формы — сегодня ваш арсенал пополнится отличным инструментом.


Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments4

Как мы ржавели. История внедрения и обучения

Reading time12 min
Views36K

Все говорили – переходи на rust! Начинай пользоваться самым-самым языком, который самый любимый язык на stackoverflow и всё такое.

Я тяжело вздохнул и огляделся. Ну опять двадцать-пять. Ладно, давайте разбираться, как правильно покрывать всё ржавчиной.

Профессионально я программирую уже 17 лет. В далёкие-предалёкие времена я начал изучать программирование с x86 Assembly. Такой жестокий подход к изучению компьютера дал мне глубокое понимание того как работает процессор и что делают другие языки программирования. Учить новые языки для меня никогда не было проблемой. Я их просто учил. C, C++, шарпы, ГО, тысячи разных скриптов и фреймворков. Чего уж там, ещё один язык, можно и выучить.

Ага.

Только вот не с этой ржавой развалюхой. Я просидел две недели над официальным руководством, пялился в VSCode и не мог выдавить из себя больше чем fn main() {}. Ну какого же чёрта? Я просто закрыл глаза, открыл руководство на рандомной странице и начал его читать. И прикол в том, что я понял о чём там говориться. И тут до меня дошло… Руководство написано наизнанку. Начало и конец ничуть не лучше чем в Мементо Кристофера Нолана. Они как-то умудрились запутать в общем-то нормальное руководство. После этого всё пошло получше.

Ржавые шестерёнки заскрипели и начали крутиться. Программа пошла-поехала. Если хотите знать как я внедрил rust в продакшин, как я ему научился и что из этого вышло – добро пожаловать под кат. Реальные люди, коммиты, примеры и никаких todo-list и хеллоу-ворлдов.

Ржаветь так ржаветь.
Total votes 113: ↑109 and ↓4+134
Comments315

Как обучать огромные модели машинного обучения на случайных GPU

Reading time11 min
Views9.4K
Вы можете спросить: почему эти полумагические модели машинного обучения работают так хорошо? Короткий ответ: эти модели чрезвычайно сложны и обучаются на огромном количестве данных. На самом деле, Lambda Labs недавно подсчитала, что для обучения GPT-3 на одном GPU потребовалось бы 4,6 миллиона долларов — если бы такое было возможно.

Такие платформы, как PyTorch и Tensorflow, могут обучать эти огромные модели, потому что распределяют рабочую нагрузку по сотням (или тысячам) GPU одновременно. К сожалению, этим платформам требуется идентичность графических процессоров (они должны иметь одинаковую память и вычислительную производительность). Но многие организации не имеют тысячи одинаковых GPU. Малые и средние организации покупают разные компьютерные системы, что приводит к неоднородной инфраструктуре, которую нелегко адаптировать для вычисления больших моделей. В этих условиях обучение моделей даже среднего размера может занимать недели или даже месяцы. Если не принять меры, университеты и другие небольшие организации рискуют потерять конкурентоспособность в погоне за разработкой новых, лучших моделей машинного обучения. Но это можно исправить.

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


Приятного чтения!
Total votes 23: ↑23 and ↓0+23
Comments0

Передача файлов по воздуху через камеру смартфона

Reading time4 min
Views36K


Проблема


Штрихкод — классная штука для маркировки всего на свете, от товаров до людей. Сейчас в ходу около двух десятков стандартов двумерных штрихкодов, и ещё десятки неудачных, трагически непонятых, самопальных и внутренних корпоративных вариантов, большинство из которых с треском проигрывает обычному QR-коду. Распространённость и простота реализации сделали его самым популярным среди двумерных штрихкодов, но и у него есть недостаток, характерный для всех линейных собратьев: он вмещает очень мало информации. В 2-3 килобайта можно уместить ссылку или небольшой отрывок текста, но даже небольшая картинка или обычный документ уже не влезут даже в самый большой код.
Total votes 83: ↑82 and ↓1+113
Comments126

Любительская голография — начало пути

Reading time13 min
Views59K
Вторая часть про галогенсеребряные фотоматериалы.

Хочу рассказать об одном из своих интересов – оптической голографии. Нет, это про не те голограммы, что показаны в «Звёздных войнах», или видны в пирамидках на экранах мобильных телефонов, не про проекцию на плёнке и т. п. А то, о чём рассказывает Википедия в соответствующей статье, а ещё лучше в англоязычном варианте (это касается всех ссылок на Википедию по тексту). Не буду вдаваться в технические подробности и дебри уравнений (происходящие процессы очень сложны, и по теме написаны десятки объёмных монографий и сотни статей), а попробую очень кратко рассказать, что такое оптическая голография и чем она отличается от фотографии в практическом плане, что в ней такого интересного и каким образом можно в домашних условиях изготовить первую настоящую голограмму. Хоть процесс записи голограмм и похож на классический аналоговый фотографический процесс, но всё же он имеет ряд заметных отличий: другие оптические схемы, не нужен объектив, и соответственно нет необходимости в фокусировке, используются фотографические материалы со значительно большим разрешением, монохроматические источники излучения, принципиальное отсутствие негатива и позитива, строгие требования к отсутствию вибраций, иные правила композиции сцены и мн. др.


Total votes 149: ↑149 and ↓0+149
Comments127

Возможности SQLite, которые вы могли пропустить

Reading time8 min
Views40K
Если вы используете SQLite, но не следите за его развитием, то возможно некоторые вещи, позволяющие сделать код проще, а запросы быстрее, прошли незамеченными. Под катом я постарался перечислить наиболее важные из них.
Читать дальше →
Total votes 76: ↑76 and ↓0+76
Comments35

ВКонтакте снова выкладывает KPHP

Reading time13 min
Views53K
Привет! Сейчас будет дежавю.

Мы снова выложили на GitHub наш PHP-компилятор — KPHP. Он проделал большой путь, и чтобы рассказать о нём, сначала телепортируемся на шесть лет назад.

Поясню для тех, кто не в теме: платформа ВКонтакте изначально была написана на PHP. Со временем нас перестала устраивать производительность, и мы решили ускорить VK. Сделали компилятор — KPHP, который поддерживал узкое подмножество PHP. Это было давно, и с тех пор мы о нём не рассказывали, так как KPHP почти не развивался до 2018-го года.

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

А теперь — телепортация.

delorean
Читать дальше →
Total votes 100: ↑95 and ↓5+140
Comments184

Лёгкие приложения Linux для старого железа

Reading time7 min
Views36K

Окружение Xfce

Любую систему можно разогнать, есть стандартные способы оптимизации десктопа: минимум софта в автозагрузке, preload, оптимальное зеркало для пакетов, apt-fast вместо apt-get, настройки для оптимизации отдельных приложений и так далее.

Но всё это мелкие оптимизации по сравнению с фундаментальными столпами:

  1. Лёгкий дистрибутив
  2. Легковесное окружение рабочего стола
  3. Быстрый софт

Это в первую очередь актуально для старого железа, хотя в принципе на каждом ПК мы хотим, чтобы система работала максимально эффективно, разве нет? Даже на современном многоядерном CPU больно видеть запуск программы в несколько секунд или задержку интерфейса 100-200 миллисекунд после нажатия по клавиатуре. Всё должно реагировать мгновенно, со скоростью человеческого восприятия. В нативных приложениях нет места лагам, как у веб-интерфейсов.

Поэтому — легковесное окружение и быстрый софт.
Читать дальше →
Total votes 35: ↑33 and ↓2+48
Comments43

Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть

Reading time14 min
Views139K


Полтора килограмма термоядерного Тринидадского Скорпиона я в итоге собрал с одного куста на гидропонике.


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


Небольшая часть урожая


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


Сегодня в меню


  1. Что такое гидропоника и почему она гораздо проще, чем почва с червячками
  2. Никаких дорогих бутылочек. Мешаем компоненты по три рубля за ведро
  3. Питание растения как алгоритм
  4. Как быстро собрать прототип гидропонной установки
  5. Что такое capsicum chinense и как выжить при дегустации
Total votes 248: ↑248 and ↓0+248
Comments328

Системы защиты Linux

Reading time9 min
Views50K
Одна из причин грандиозного успеха Linux ОС на встроенных, мобильных устройствах и серверах состоит в достаточно высокой степени безопасности ядра, сопутствующих служб и приложений. Но если присмотреться внимательно к архитектуре ядра Linux, то нельзя в нем найти квадратик отвечающий за безопасность, как таковую. Где же прячется подсистема безопасности Linux и из чего она состоит?

Предыстория Linux Security Modules и SELinux


Security Enhanced Linux представляет собой набор правил и механизмов доступа, основанный на моделях мандатного и ролевого доступа, для защиты систем Linux от потенциальных угроз и исправления недостатков Discretionary Access Control (DAC) — традиционной системы безопасности Unix. Проект зародился в недрах Агентства Национальной Безопасности США, непосредственно разработкой занимались, в основном, подрядчики Secure Computing Corporation и MITRE, а также ряд исследовательских лабораторий.


Linux Security Modules
Читать дальше →
Total votes 35: ↑34 and ↓1+48
Comments8

Лидары для автомобилей стоили $75.000, а теперь лидары будут в каждом iPhone

Reading time10 min
Views45K
image

Как Apple удалось создать доступные лидары без движущихся частей для iPhone

На презентации iPhone 12 во вторник Apple представила возможности нового лидара. По словам Apple, лидар позволит усовершенствовать камеру iPhone за счёт ускорения фокусировки, особенно в условиях низкой освещённости. Возможно, таким образом появится новое поколение сложных AR-приложений.

Во вторник на презентации было рассказано о том, как работает лидар в iPhone, хотя это не первое устройство с лидаром от Apple. Впервые компания представила устройство, использующее эту технологию, в марте – это был обновленный iPad. И хотя пока еще никто не успел разобрать iPhone 12, мы можем многое узнать из недавних разборок последнего iPad.

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

Июньский анализ, проведенный компанией «System Plus Consulting», показал, что лидар в iPad посылает свет, используя матрицу вертикально-излучающих лазеров (VCSEL), изготовленную компанией «Lumentum». Затем он фиксирует обратную вспышку, используя массив однофотонных лавинных диодов (SPAD), поставляемых компанией Sony. Я объясню что это такое в следующем разделе.
Читать дальше →
Total votes 40: ↑34 and ↓6+45
Comments110

Самый маленький офисный пакет в мире

Reading time8 min
Views35K


Всем нам знаком традиционный офисный пакет — текстовый редактор, электронные таблицы, программа для создания презентаций, возможно, приложение для создания диаграмм или заметок. Всё это мы видим в Microsoft Office и в Google Docs. Все эти программы мощны и объёмны. Но каким будет минимальное количество кода, требуемое для создания офисного пакета?
Читать дальше →
Total votes 65: ↑63 and ↓2+81
Comments26

Ловим баги на клиенте: как мы написали свою систему для сбора клиентских ошибок

Reading time15 min
Views9.8K

У нас в Badoo довольно много клиентских приложений. Помимо основных продуктов Badoo и Bumble, у которых есть как веб-версии (десктопная и мобильная), так и клиенты под нативные платформы (Android и iOS), ещё есть с десяток внутренних инструментов со своими UI.  Для сбора клиентских ошибок мы используем собственную разработку под кодовым названием Gelatо. Последние два года я работал над её серверной частью и за это время открыл для себя много нового из мира разработки Error Tracking систем. 

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

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

okdb — библиотека для совместной работы

Reading time2 min
Views6.1K


Организация совместной работы в приложении всегда кажется большим геморроем и отметается на этапе планирования большинства приложений. По сути, сейчас принято пилить реалтайм-взаимодействие только там, где это часть обязательного функционала, в качестве дополнительной фишки его не встретить. Разработчики из Anwendo хотят исправить эту ситуацию и представляют okdb — библиотеку и сервис, позволяющие снять с себя львиную долю проблем и сложности, связанных с организацией совместных рабочих сессий.
Total votes 29: ↑29 and ↓0+29
Comments3

Information

Rating
1,215-th
Registered
Activity