• Завтра мы начнём вас убивать, или Зачем нужны инженеры

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

      Сподвигла меня на это разразившаяся (при моём активном участии) в минувшие выходные история с «нейроинтерфейсами» компании Bitronics Lab — детскими учебными наборами для снятия ЭЭГ и мышечной активности, которые при ближайшем рассмотрении оказались попросту небезопасны в использовании из-за несоблюдения их производителем базовых требований к электробезопасности медицинского оборудования.

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

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

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



      Казалось бы, что может пойти не так?
      Читать дальше →
    • Debian 9: что нового



        17 июня 2017 года вышла в свет новая, девятая версия Debian под кодовым названием Stretch. Работа над Debian 9 длилась два с небольшим года, а если совсем точно — 26 месяцев. Она будет поддерживаться в течение ближайших пяти лет.

        Новая версия посвящена памяти основателя проекта Debian Иэна Мёрдока, погибшего в конце 2015 года.


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

        Кроме того, у нас есть ещё одна новость, не менее важная: образ Debian 9 уже доступен пользователям наших облачных сервисов — Vscale и Virtual Private Cloud, и вы можете познакомиться с ним поближе прямо сейчас.

        Читать дальше →
      • 12 навыков создания защищенных веб-приложений

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

          Большинство примеров кода не привязаны к какому-либо конкретному языку программирования, но для наглядности я буду использовать PHP.

          Итак, поехали.

          Читать дальше →
        • Наводим порядок: как организовать работу в ходе создания сайта. (Часть 1)

          • Translation
          Немного не по теме

          Заручившись согласием ilusha_sergeevich мы планируем размещать на Хабре переводы некоторых статей, ссылки на которые он приводит в публикациях «Несколько интересностей и полезностей для веб-разработчика» в разделе «Западные мысли или что стоило бы перевести на Хабре». На самом старте этого начинания мы хотим поинтересоваться у сообщества о степени его целесообразности (опрос в конце статьи).

          Собственно, сам текст

          К сожалению, мы использовали слово «организовать» в названии. «Тушите свет» — это, вероятно, то, о чем подумали многие. Организованность – это немного скучно, но крайне важно. Возможно, стоит рассмотреть это понятие в контексте.

          Давайте представим, что мы делаем сайт для модного арт-кафе «Beat». Это атмосферное место с картинами 20-х годов на стенах, живым джазом и богатым покровителем, но у них все еще нет собственного сайта. Они нанимают вас, чтобы исправить ситуацию. Как талантливый дизайнер, вы уверены, что сможете создать фантастический сайт, но у них есть множество идей о функционале и вы не совсем уверены в том, как организовать все файлы, необходимые для вашего сайта.
          Читать дальше →
        • UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»

            UPD от 2017-03-04: кто-то выполнил английский перевод. Обсуждение на Hacker News.

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

            Костыли в UNIX начали возникать ещё с момента появления UNIX, а это было ещё раньше появления не только Windows, но даже вроде бы Microsoft DOS (вроде бы, мне лень проверять, проверяйте сами). Если лень читать, хотя бы просмотрите все пункты, что-нибудь интересное найдёте. Это далеко не полный список, это просто те косяки, который я захотел упомянуть.
            Читать дальше →
          • Загрузка данных в Google Analytics: три способа узнать о вашей рекламе больше

              Если бы нас спросили, что же главное в аналитике, то одним из пунктов мы бы назвали сравнение данных: статистики рекламных кампаний, сегментов пользователей, показателей эффективности. Сравнение позволяет создавать предложения для каждого сегмента рынка. В этом контексте ценна возможность агрегации и сопоставления данных по контекстной рекламе на всех площадках. Данные Google AdWords и Яндекс.Директ часто отличаются, и сравнительный анализ показателей наталкивает на новые нестандартные решения для маркетинговых активностей. Предлагаем поговорить о системах загрузки данных в интерфейс главного инструмента веб-аналитики — Google Analytics.


              Читать дальше →
            • Что такое SBC (Пограничный Контроллер Сессий) и зачем он нужен

                Рынок пограничных контроллеров сессий с каждым годом набирает обороты, при этом для многих в области VoIP данное устройство остаётся неким вопросом – а зачем он нужен и где его правильно применять. Собственно, хотелось бы описать те функции и задачи, которые выполняет данное оборудование и почему установка данного устройства, если не обязательно, то уж точно крайне желательно на сети VoIP.
                Пойдём от простого к сложному. Для начала определим те самые три функции, которые SBC выполняет на сети заказчика.

                1. Безопасность
                2. Совместимость
                3. Обеспечение и контроль качества

                читать дальше...
              • Китайцы — они такие китайцы

                  Сей пост навеян неожиданным для меня интересом хабранаселения к посту уважаемого Milfgard из Мосигры про производство в Китае. Дело в том, что один из моих интересов как раз в производстве батарей – Denaq. И производство расположено ну конечно же в Китае. Я не стану рассказывать про организацию производства, там свои замечательные фокусы есть. Я расскажу именно про заказ чего-то под себя и покупку всякого опта. Что-то вроде алгоритма украшенного реальными историями из личного опыта. Это все будет про электронику, так как я сам именно ею занимаюсь. Истории и иллюстрации я буду выделять курсивом. Кому скучно читать общие выводы – читайте только их.
                  Читать дальше →
                • Парсим на Python: Pyparsing для новичков

                  Парсинг (синтаксический анализ) представляет собой процесс сопоставления последовательности слов или символов — так называемой формальной грамматике. Например, для строчки кода:

                  import matplotlib.pyplot  as plt
                  

                  имеет место следующая грамматика: сначала идёт ключевое слово import, потом название модуля или цепочка имён модулей, разделённых точкой, потом ключевое слово as, а за ним — наше название импортируемому модулю.

                  В результате парсинга, например, может быть необходимо прийти к следующему выражению:

                  { 'import': [ 'matplotlib', 'pyplot' ], 'as': 'plt' }
                  

                  Данное выражение представляет собой словарь Python, который имеет два ключа: 'import' и 'as'. Значением для ключа 'import' является список, в котором по порядку перечислены названия импортируемых модулей.

                  Для парсинга как правило используют регулярные выражения. Для этого имеется модуль Python под названием re (regular expression — регулярное выражение). Если вам не доводилось работать с регулярными выражениями, их вид может вас испугать. Например, для строки кода 'import matplotlib.pyplot as plt' оно будет иметь вид:

                  r'^[ \t]*import +\D+\.\D+ +as \D+'
                  

                  К счастью, есть удобный и гибкий инструмент для парсинга, который называется Pyparsing. Главное его достоинство — он делает код более читаемым, а также позволяет проводить дополнительную обработку анализируемого текста.

                  В данной статье мы установим Pyparsing и создадим на нём наш первый парсер.

                  Читать дальше →
                • Как подобрать платье с помощью метода главных компонент

                  • Translation
                  Итак, кто не против, чтобы одежду ему подбирала программа, машина, нейросеть?

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

                  image
                  Читать дальше →
                • Почему IDEA лучше Eclipse

                    Священный спор


                    Принято считать, что есть «вечные» вопросы, на которые нет правильного ответа. Например, что лучше: Windows или Linux, Java или C#; Чужой против Хищника или Чак Норрис против Ван Дамма.

                    Одним из таких холиваров считается выбор лучшей IDE для Java:


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

                    Так вот, я утверждаю, что это не просто дело вкуса. Есть объективные причины, почему
                    Intellij IDEA однозначно лучше, чем Eclipse.

                    Подчёркиваю, мы сейчас рассматриваем обе среды именно как Java IDE.

                    Я не буду приводить кучу мелких различий вроде плагинов, горячих клавиш и т.п. — этому посвящены многие страницы в интернете, а объясню лишь одно, самое главное отличие. Как правило, о нём не знают ни идеяшники, ни эклипсофилы, ибо первые привыкли к нему и не знают, что в других IDE этого может и не быть, а вторые привыкли жить без него, и даже не догадываются, что может быть лучше. Более того, эклипсники его не замечают, когда пробуют IDEA ради интереса, ибо привыкли работать по-старому.

                    Итак, главное различие между IDEA и Eclipse
                  • Как закрыть Интернет в России

                      Начнём с источников:
                      • Проект развития мультисервисных сетей в России на ближайшие годы, усилиями Минкомсвязи: minsvyaz.ru/ru/discussions/index.php?id=41
                      • Разбор и обсуждение оного с эвфимизмами в отношении существующих телекомов: www.kipchatov.ru/blog/?p=1151 (очень рекомендуется к прочтению)

                      Для скучающего читателя выписываю самую жаренную часть.

                      По планам минкомсвязи ожидается изменение провайдерского рынка — все операторы делятся на «федеральных операторов связи» и плебейских просто операторов связи.

                      При этом:

                      «просто операторам связи» запрещается трансграничная передача данных. Этим должны, будут и могут заниматься только федеральные операторы связи.

                      Самим федеральным операторам связи ставится в обязательство присутствовать на всей территории страны, причём год от года требования по присутствию увеличиваются — к 2014 это города с 100к населения, а к 2018 — с 8к (да-да, в каждый заполярный город оптику). Таким образом стать ФОС сможет только Очень Очень Очень толстый оператор. И у него будет монополия на иностранный трафик.

                      Тарифы для подключения операторов, разумеется, демократические, регулируемые регулятором (который изо всех сил начинает сдерживать внезапно образовавшегося монополиста/монополистов).
                      Читать дальше →
                    • Pull request'ы на GitHub или Как мне внести изменения в чужой проект

                      • Tutorial
                      По просьбе tulskiy делаю вольный перевод частей официальной документации GitHub'а Fork A Repo и Send pull requests.

                      Итак, что же такое «запрос на включение (сделанных вами изменений)» (именно так я перевёл pull request)? В официальной документации гитхаба говорится следующее:
                      Pull request'ы позволяют вам рассказать другим о тех изменениях, которые вы разместили в своём GitHub-репозитории. Как только pull request отправлен, заинтересованные стороны рассматривают ваши изменения, обсуждают возможные правки или даже добавляют дополняющие коммиты, если нужно.

                      Говоря своим языком: Посылая pull request, вы говорите автору изначального репозитория (и всем заинтересованным лицам): «Смотрите, что я сделал, не хотите ли принять мои изменения и влить их в проект?»
                      Читать дальше, но теперь уже обо всём по порядку
                    • Ликбез — как стать программистом

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

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

                        Далее я постараюсь описать какими знаниями, умениями и навыками обладает хороший программист, и что нужно делать, что бы этого достичь.
                        Читать дальше →
                      • Почему 1С это плохо и почему так не любят 1С программистов

                          Мы продолжаем то, что мы уже много наделали.

                          Черномырдин В.С.

                          Не так давно ко мне в очередной раз обратился клиент с широко известной проблемой. В его компании установили обновления 1С. И работа остановилась, так как программа перестала корректно работать. Думаю, всем, кто сталкивался с программными продуктами от 1С в качестве программиста или пользователя, эта ситуация очень хорошо знакома.

                          Конечно, в данном конкретном случае я постарался решить все проблемы в самые короткие сроки, и, в результате, работа офиса вернулась в привычное русло. Но даже в такой ситуации я получил массу негатива со стороны клиента. И тогда я задумался о том, почему с программными продуктами 1С постоянно возникает такое количество проблем, почему от клиентов идет столько негатива, а самих 1С-программистов часто недолюбливают, в том числе, и другие программисты?
                          Читать дальше →
                        • Микроэлектронная индустрия в России (2012)

                            С теорией (1) (2) закончили — пора переходить к практике. В этой статье — о том, какие микроэлектронные заводы в России (и Белоруссии) существуют и что они могут делать, а также о самых крупных разработчиках собственно самих микросхем, и каких работающих результатов им удалось добиться.

                            Под катом — драматическая история о пластиковой электронике, российской «гуманитарной помощи» знакомой многим компании AMD и билетах Метро.

                            Ну и в дополнение — график показывающий как изменялось состояние российской микроэлектроники последние 22 года по сравнению с США и Китаем.
                            Читать дальше →
                          • Конференции для разработчиков c видео презентациями

                              Для разработки надо идти в ногу со временем, и хорошее место узнать что-то новое и получить ценный опыт — концеренции и мастер классы. Я вот решил собрать некоторые значащие конференции и их видеоканалы с выступлениями. Старался не включать мелких конференций, слишком отдалённых от программирования (по PM и маркетингу), или не выкладывающих видео.

                              К сожалению некоторые конференции
                              • заказывают сторонних людей, которые выкладывают всё на свой канал вместе с другими конференциями или личным хламом;
                              • встраивают в свой сайт без возможность шаринга, а порой и вообще закрывают под ключ или с оплатой;
                              • не выкладывают материалы и трёхлетней давности;
                              • не заботятся о качестве видео — тёмный зал, совершенно не видно презентации, нет монтажа, неполадки со звуком, неслышно вопросов и т.п.

                              Понятно что у организаторов своя бизнес-модель и возможности, но хочется унифицировать и мотивировать организаторов относиться к докладам и их авторам с уважением, выкладывать видео со временем, синхронизировать со слайдами.
                              С видео Без нормального видео

                              Читать дальше →
                            • Лжеотождествление электровиолончели

                              • Tutorial
                              Когда Алексей TheShade Шипилёв рассказывал про особенности поведения Java-строк с нулевым значением хэшкода, он приводил в качестве примера строку "лжеотождествление электровиолончели". Когда FindBugs предупреждает вас о проблемах с вычислением абсолютного значения хэшкода, равного Integer.MIN_VALUE, он приводит примеры строк, имеющих такой хэшкод — "polygenelubricants" или "DESIGNING WORKHOUSES". Откуда взялись эти примеры? Как самому составить красивую строку с заданным наперёд хэшкодом?

                              Различных хэшкодов существует 232 — немногим более четырёх миллиардов, а слов в человеческом языке — порядка ста тысяч. Найти одно слово с нужным хэшкодом почти нереально, а вот сочетание из двух слов вполне можно. Если добавить ещё вариации вроде предлогов, то появится выбор.

                              Перебирать все возможные комбинации долго, но можно процесс оптимизировать, выполнив несложные преобразования над формулой хэшкода строки. Давайте напишем генератор словосочетаний с заданным хэшкодом. Писать будем на чистой Java 8, в модном нынче функциональном стиле.
                              Читать дальше →
                            • Получение участников сообщества vk.com за считанные секунды

                              • Tutorial
                              Ни для кого не секрет, что VK API возвращает за один запрос к методу groups.getMembers не более 1 000 участников. В одну секунду вы можете получить максимум 3 000 участников, так как установлено ограничение на количество запросов в секунду до 3. Эту проблему решает метод execute, с помощью которого вы можете получить более 100 000 участников за одну секунду и до 25 000 участников за один запрос. В этой статье я расскажу Вам, как я это реализовал.
                              Читать дальше →
                            • Финиширование генома: быстро, качественно, недорого

                                Думаю, что многие читатели Хабра уже слышали о биоинформатике, возможно даже непосредственно о задаче сборки генома. Множество людей по всем миру занято написанием геномных ассемблеров — программ, интерпретирующих сырые данные машин для секвенирования и выдающих в результате последовательность ДНК изучаемого организма. Однако, в большинстве случаев, геном целиком «из коробки» получить не удается. В этой статье я постараюсь объяснить, почему же геном нельзя собрать одним щелчком мыши и опишу процесс его «финиширования» — пожалуй, самый трудоемкий этап во всей сборке, порой длящийся несколько лет.

                                Также, я расскажу, как мы иногда можем существенно облегчить этот процесс, используя уже собранные геномы близкородственных организмов. Этой задачей я занимался в рамках написания своей магистерской диссертации в Санкт-Петербургском Академическом Университете, а обучение проходило совместно с Институтом Биоинформатики. Поскольку получившийся алгоритм достаточно специфичен, я начну с описания проблемы в целом, дам обзор некоторых «хардварных» методов ее решения, а затем немного расскажу о том, что же получилось у меня.

                                Читать дальше