Как стать автором
Обновить
5
0
Solver @solver

Back-end developer

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

7 производителей печатных плат вместо JLCPCB. Где можно заказать платы в 2023 году

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

Привет, Хабр! Я – Дима, в компании отвечаю за закупку компонентов. Долгове время у нас было два поставщика печатных плат. Один из них вышеупомянутый JLCPCB. После того, как он ушел из России, пришла проблема откуда не ждали – второй поставщик начал подводить по срокам и отгружать откровенный брак. 

Встал вопрос о поиске новых производителей. Я пытался найти в сети честные отзывы, но их либо не было, либо были заказные. За год я попробовал работать с 7 производителями. Ниже делюсь своими впечатлениями: плюсы и минусы.

Для удобства в конце привожу сводную таблицу с кратким описанием преимуществ и недостатков производителей.

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

Шина между Веб-воркерами и основным потоком. Ускоряем работу JavaScript

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

Хотите узнать, как ускорить выполнение JavaScript в веб-приложениях? В этой статье я подробно расскажу о веб-воркерах, шине данных между основным потоком и веб-воркерами, и как это можно применить в Angular, React и Vue, используя мой npm пакет web-worker-bus. Вы узнаете, как вынести тяжелые вычисления в отдельные потоки, организовать обмен данными, и как это все собрать в единую архитектуру. Примеры кода, инструкции и советы внутри помогут вам сделать ваши проекты быстрее и эффективнее с помощью этого инструмента. Освоение этого подхода и использование web-worker-bus может стать значимым улучшением в ваших проектах. Загляните, если интересуетесь оптимизацией JavaScript и хотите узнать, как мой пакет может вам в этом помочь!

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

Linux для игр, Windows для работы. С чего начать, как установить и настроить

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

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

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

Читать далее
Всего голосов 68: ↑64 и ↓4+78
Комментарии197

Необычный дуалбут: ноутбук с «двойным дном»

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

Не так давно на Habr Q&A я наткнулся на интересный вопрос — как сделать, чтобы два жестких диска не видели друг друга? Чтобы вирус, попав на одну систему, никоим образом не мог заразить другую. В ответах предлагали достаточно стандартные способы — использовать полнодисковое шифрование, отключить диск в диспетчере устройств и даже поставить переключатель на питание. Но что если взглянуть на задачу совершенно с другого угла и сделать всё средствами самого HDD? Да-да, сегодня мы снова погружаемся в пучины модификации прошивок и реверс-инжиниринга!
Узнать подробности
Всего голосов 274: ↑270 и ↓4+353
Комментарии122

Отслеживание Bluetooth-устройств: эксперимент и выводы

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

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

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

Переписка со спамерами: избранное – 2

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

Спамер демонстрирует комиссии ФАС свою полную неуиноуность (доллары подкинули враги, спам – ветром надуло).

Я радуюсь, получая спам, ведь у меня появляется возможность пополнить бюджет любимой страны (откуда берутся деньги на пенсии, больницы, школы и домики для уточек). Каждое полученное от спамеров сообщение я аккуратно пересылаю в ФАС, давая ей возможность пополнить бюджет на 2-500 тысяч рублей штрафа, а потом наслаждаюсь материалами «расследований», проливающих свет на грязную подноготную «солидного бизнеса» и его подручных. Вранье, подтасовка документов и далее со всеми остановками…

Читать дальше →
Всего голосов 79: ↑76 и ↓3+85
Комментарии67

Умная консоль для WoW 3.3.5a

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

Начну с того, что я написал на Rust консольный клиент для WoW. В текущий момент он работает в режиме прослушки пакетов и может быть использован, как бот. В дальнейшем планируется усовершенствовать ручную отправку пакетов. Что именно на данный момент реализовано...

Читать далее
Всего голосов 14: ↑8 и ↓6+2
Комментарии11

Оптимизация программ под Garbage Collector

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

Не так давно на Хабре появилась прекрасная статья Оптимизация сборки мусора в высоконагруженном .NET сервисе. Эта статья очень интересна тем, что авторы, вооружившись теорией сделали ранее невозможное: оптимизировали свое приложение, используя знания о работе GC. И если ранее мы не имели ни малейшего понятия, как этот самый GC работает, то теперь он нам представлен на блюдечке стараниями Конрада Кокоса в его книге Pro .NET Memory Management. Какие выводы почерпнул для себя я? Давайте составим список проблемных областей и подумаем, как их можно решить.


На недавно прошедшем семинаре CLRium #5: Garbage Collector мы проговорили про GC весь день. Однако, один доклад я решил опубликовать с текстовой расшифровкой. Это доклад про выводы относительно оптимизации приложений.


Всего голосов 40: ↑40 и ↓0+40
Комментарии4

Игра (не) для дураков. Пишем AI для «Дурака» (часть 1)

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

Думаю, ни для кого не секрет, что "Дурак" (далее это слово будет написано с маленькой буквы и без кавычек) — это самая популярная карточная игра в России и странах бывшего СССР (хотя и почти неизвестная за его пределами). Несмотря на свое название и довольно несложные правила, выигрыш в ней все-таки зависит больше от мастерства игрока, чем от случайного расклада карт (в английской терминологии игры того и другого типов называются соответственно game of skill и game of chance. Так вот — дурак в большей степени game of skill).


Целью статьи является написание простого ИИ для игры. Под словом "простого" подразумевается следующее:


  • интуитивно понятный алгоритм принятия решений (то есть, как следствие, никакого машинного обучения, в котором этот алгоритм скрыт глубоко "под капотом");
  • отсутствие состояния (то есть, алгоритм руководствуется только данными на текущий момент времени, проще говоря, ничего не запоминает (например, не "считает" вышедшие из игры карты).
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии13

Коллекции в Java: о чём многие забывают

Время на прочтение6 мин
Количество просмотров142K
Из опыта code-review и ответов на StackOverflow набралось немало моментов, касающихся Java Collections API, которые мне казались очевидными, но другие разработчики о них почему-то не знали или знали, но не чувствовали уверенности их применять. В этой статье я собираю в общую кучу всё, что накопилось.

Содержание:


  1. List.subList
  2. PriorityQueue
  3. EnumSet и EnumMap
  4. Set.add(E) и Set.remove(E) возвращают булево значение
  5. Map.put(K, V), Map.remove(K), List.set(idx, E), List.remove(idx) возвращают предыдущий элемент
  6. Map.keySet() и Map.values()
  7. Arrays.asList может быть ключом
  8. Collections.max
  9. LinkedList, Stack, Vector, Hashtable
Читать дальше →
Всего голосов 58: ↑57 и ↓1+56
Комментарии37

Как в Java выстрелить себе в ногу из лямбды и не промахнуться

Время на прочтение9 мин
Количество просмотров33K
Иногда можно услышать такие разговоры: никаких принципиальных изменений в Java 8 не произошло и лямбды это старые добрые анонимные классы щедро посыпанные синтаксическим сахаром. Как бы не так! Предлагаю сегодня поговорить, в чём отличие лямбд от анонимных классов. И почему попасть себе в ногу стало всё-таки сложнее.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии40

Я техлид. Что делать?

Время на прочтение13 мин
Количество просмотров43K
Больше года я занимаю должность технического лидера в своей компании, и хочется поделиться наработками по теме. Имеет смысл уточнить: я веду отдел iOS-разработки из 10 человек в компании-аутсорсере. В моём случае должность подразумевает оптимизацию работы отдела, распределение задач между разработчиками и активности, связанные с программированием. Расскажу немного о своём опыте, наработках и умозаключениях. Статья может быть полезна прежде всего новичкам на аналогичной должности, либо тем, кто на неё метит. Какие-то практики и принципы могут быть переносимы на обычную разработку, на другие платформы или даже другие специальности.
Читать дальше →
Всего голосов 53: ↑50 и ↓3+47
Комментарии30

Балансируем механику в играх

Время на прочтение5 мин
Количество просмотров26K
imageВ индустрии игр пользователь, как правило, получает готовый продукт — конфету в обертке. Обертку можно рассмотреть сразу, а вот то, что под ней скрыто, порой навсегда остается тайной. В интернете можно найти много достойной информации о том, как правильно упаковывать конфеты и какого цвета должны быть узоры на обертке. Но я, вместе с вами, хочу снять обертку и попробовать саму конфету. Под конфетой я имею ввиду — взгляд от первого лица, как делать баланс игры.

Например, мы захотели создать незатейливую RPGMMO-шечку «убийцу WoW», и у нас уже почти все готово. Мы уже нафантазировали, какая в игре будет крутая механика боя и система умений. Дело осталось за малым – абстрактные мысли превратить в конкретные значения. Причем, каким-то образом, сочетание этих значений должно убедить игрока в том, что фраза «баланс – говно» — это не про нас.
Читать дальше →
Всего голосов 27: ↑19 и ↓8+11
Комментарии9

Сетевой слой движка физики

Время на прочтение7 мин
Количество просмотров4.8K
Всем привет. Одним игровым проектом на физике box2d стало больше, закончили онлайн-файтинг на физике ragdoll. Хотелось бы сделать некоторые выводы и рассказать об основных технических проблемах, с которыми пришлось столкнуться, и о методах их решения. Статья заинтересует начинающих разработчиков [флеш-]игр с использованием физических движков. Фокус делается на сетевом слое для движка физики.
Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии10

Как работает мозг?

Время на прочтение8 мин
Количество просмотров120K
Этот пост написан по мотивам лекции Джеймса Смита, профессора Висконсинского университета в Мадисоне, специализирующегося в микроэлектронике и архитектуре вычислительных машин.

История компьютерных наук в целом сводится к тому, что учёные пытаются понять, как работает человеческий мозг, и воссоздать нечто аналогичное по своим возможностям. Как именно учёные его исследуют? Представим, что в XXI веке на Землю прилетают инопланетяне, никогда не видевшие привычных нам компьютеров, и пытаются исследовать устройство такого компьютера. Скорее всего, они начнут с измерения напряжений на проводниках, и обнаружат, что данные передаются в двоичном виде: точное значение напряжения не важно, важно только его наличие либо отсутствие. Затем, возможно, они поймут, что все электронные схемы составлены из одинаковых «логических вентилей», у которых есть вход и выход, и сигнал внутри схемы всегда передаётся в одном направлении. Если инопланетяне достаточно сообразительные, то они смогут разобраться, как работают комбинационные схемы — одних их достаточно, чтобы построить сравнительно сложные вычислительные устройства. Может быть, инопланетяне разгадают роль тактового сигнала и обратной связи; но вряд ли они смогут, изучая современный процессор, распознать в нём фон-неймановскую архитектуру с общей памятью, счётчиком команд, набором регистров и т.п. Дело в том, что по итогам сорока лет погони за производительностью в процессорах появилась целая иерархия «памятей» с хитроумными протоколами синхронизации между ними; несколько параллельных конвейеров, снабжённых предсказателями переходов, так что понятие «счётчика команд» фактически теряет смысл; с каждой командой связано собственное содержимое регистров, и т.д. Для реализации микропроцессора достаточно нескольких тысяч транзисторов; чтобы его производительность достигла привычного нам уровня, требуются сотни миллионов. Смысл этого примера в том, что для ответа на вопрос «как работает компьютер?» не нужно разбираться в работе сотен миллионов транзисторов: они лишь заслоняют собой простую идею, лежащую в основе архитектуры наших ЭВМ.

Моделирование нейронов


Кора человеческого мозга состоит из порядка ста миллиардов нейронов. Исторически сложилось так, что учёные, исследующие работу мозга, пытались охватить своей теорией всю эту колоссальную конструкцию. Строение мозга описано иерархически: кора состоит из долей, доли — из «гиперколонок», те — из «миниколонок»… Миниколонка состоит из примерно сотни отдельных нейронов.



По аналогии с устройством компьютера, абсолютное большинство этих нейронов нужны для скорости и эффективности работы, для устойчивости ко сбоям, и т.п.; но основные принципы устройства мозга так же невозможно обнаружить при помощи микроскопа, как невозможно обнаружить счётчик команд, рассматривая под микроскопом микропроцессор. Поэтому более плодотворный подход — попытаться понять устройство мозга на самом низком уровне, на уровне отдельных нейронов и их колонок; и затем, опираясь на их свойства — попытаться предположить, как мог бы работать мозг целиком. Примерно так пришельцы, поняв работу логических вентилей, могли бы со временем составить из них простейший процессор, — и убедиться, что он эквивалентен по своим способностям настоящим процессорам, даже хотя те намного сложнее и мощнее.
Читать дальше →
Всего голосов 66: ↑64 и ↓2+62
Комментарии38

Разоблачение 12 юридических заблуждений о программах для ЭВМ

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


Заблуждение / опасная привычка На самом деле … Наш совет прост:
1. Мы создали программу и автоматически стали ее авторами и правообладателями. Для охраны и продажи программы никаких документов оформлять не нужно, ведь она охраняется авторским правом — ©! Действительно: программа для ЭВМ охраняется авторским правом как литературное произведение (п.1 ст. 1259, ст. 1261 ГК РФ).

Но то, что для возникновения авторских прав не требуется регистрация или соблюдение каких-либо иных формальностей (п.4 ст. 1259 ГК РФ), ни в коем случае не освобождает:
− от соблюдения набора критериев, установленных законом;
− от необходимости документально доказать факт создания программы и свои права на них.

Неоформленный SOFT закон не охраняет.

Всё просто: если у вас спор о правах на программу, то без документов вы не сможете доказать, что (1) у вас были права и (2) ваши права нарушены, (3) что сама эта совокупность данных и команд на языке программирования является интеллектуальной собственностью (ведь различные версии и релизы никакой новой интеллектуальной собственности не создают).
То же самое – при постановке на бухгалтерский учёт и оформлении бухгалтерских проводок.

Коротко говоря: нет документов = нет интеллектуальной собственности = нет нарушений прав = нет компенсации за нарушение прав.
Оформляйте много хороших и разных документов при создании программ для ЭВМ:
— договоры с авторами;
— договоры с подрядчиками;
— технические задания;
— протоколы совещаний и тестов;
— соглашения между соавторами;
— авторское свидетельство;
— сертификат признания интеллектуальной собственности;
— спецификация РИД;
— свидетельство о регистрации программы для ЭВМ (Роспатент).
Читать дальше →
Всего голосов 149: ↑119 и ↓30+89
Комментарии210

Спать мало, но правильно?

Время на прочтение7 мин
Количество просмотров900K
Навеяно этим постом от юзера case. Пост не новый, и на главную он не попал.
Но я вот наткнулся на него сегодня и решил написать кое-что о сне. Уверен, что это будет полезно многим хабравчанам, да и случайным читателям тоже.
Читать дальше →
Всего голосов 713: ↑670 и ↓43+627
Комментарии420

Типичные ошибки при защите сайтов от CSRF-атак

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


В настоящее время в сфере обеспечения безопасности веб-сайтов и приложений возникла очень интересная ситуация: с одной стороны, некоторые разработчики уделяют особое внимание безопасности, с другой, они напрочь забывают о некоторых видах атак и не считают ошибки, позволяющие выполнить данные атаки, уязвимостями. Например, к такой категории можно отнести CSRF (Сross Site Request Forgery). Эта атака позволяет производить различные действия на уязвимом сайте от имени авторизованного пользователя. Если вы не слышали о таком, то я рекомендую прочитать соответствующую статью в Википедии, чтобы иметь общее представление об этом виде атак. Основная часть статьи предназначена тем, кто обеспокоен правильной защитой своих сайтов от CSRF.
Читать дальше →
Всего голосов 49: ↑40 и ↓9+31
Комментарии93

Спидран по 13 уязвимостям на сайтах. Основные понятия, и средства защиты

Время на прочтение8 мин
Количество просмотров70K
Недавно по работе собирал своего рода лекцию по веб-безопасности, ознакомился с известным рейтингом уявзимостей OWASP 2013 года, но с удивлением обнаружил, что корректной инфы на русском языке крайне мало, или её практически нет.

Это, собственно, и стало поводом написать такую статью, в которой тезисно будут описаны основные уязвимости, причины, примеры и решения.

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

Читать дальше →
Всего голосов 68: ↑57 и ↓11+46
Комментарии29

Деревья принятия решений на JavaScript

Время на прочтение4 мин
Количество просмотров33K
В качестве практического приложения к предыдущей статье, хочу предоставить крошечную JavaScript библиотеку для построения деревьев и леса принятия решений.

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

Информация

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