• Доказательное программирование

      Внимание!


      • Содержание данной статьи никак не связано с докладом академика А. П. Ершова "Научные основы доказательного программирования" 1984г.
      • Статья содержит утверждения, способные вызвать вспышки гнева и неконтролируемой агрессии. За последствия автор статьи ответственности не несет!
      • В тексте упоминаются следующие языки программирования: Java, Swift, Kotlin, Scala, Go, Haskell и др.
      • Эта статья — антитезис. Автор ставит вопросы, но не считает своим долгом на все из них дать ответы.

      В момент своего появления в Европе доказательная медицина казалась скандальной, неприятной и отвергаемой почти всем медицинским сообществом идеей. Даже в США, которые сейчас являются оплотом доказательной медицины, долгое время не хотели ее принимать. Основная мысль — докажи, что то, что ты собираешься сделать, реально поможет. Сейчас большинство назначений доктора делают исходя из приобретенных знаний и опыта. Но что если для некоторых ситуаций можно создать такой протокол лечения, следуя которому с болезнью сможет справиться даже неспециалист, и будет доказано, что этот протокол работает? Можно ли покрыть такими протоколами все известные недуги? Все, конечно же, нет, но какие-то — определенно, да.


      И вот тут невольно возникает вопрос: не обошла ли медицина другую, казалось бы, не менее прогрессивную индустрию разработки программного обеспечения?

      Читать дальше →
    • Развитие аккумуляторов происходит по их собственному «закону Мура»

      • Translation


      Для аккумуляторов, как заявляют глубоко разочарованные инженеры, закон Мура не выполняется. В отличие от полупроводниковых устройств, производительность которых удваивалась примерно каждые два года в течение полувека, в соответствии с утверждением сооснователя Intel Гордона Мура, аккумуляторы едва движутся вперёд, и, похоже вчистую проигрывают. Нам остаётся только продолжать работать над совершенствованием химических процессов и надеяться на лучшее.
      Читать дальше →
    • Где работать в ИТ в 2021: «Кавычки»

        Продолжаем рассказывать вам об интересных работодателях в нашей рубрике «Где работать в ИТ». В новом выпуске — «Кавычки» — компания с новосибирскими корнями и полностью распределённой командой, которая занимается аутсорс-тестированием ПО и обеспечением качества. О найме, условиях работы и внутренних процессах в «Кавычках» мы расспросили Елену Хасанову, руководителя IT-проектов и заместителя директора.

        В 2020 году компания получила на Хабр Карьере хорошую оценку — почти 4,5 из пяти. Дальше мы расскажем, за какие качества сотрудники особенно благодарны компании. 

        Читать далее
      • Будни OEMщика (Часть 2)

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


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


          В этой части мы рассмотрим специализированные настройки, с помощью которых можно настроить устройство фиксированного назначения. К таким устройствам относятся: банкоматы, информационные киоски, рекламные панели, кассы и др. Плюс к этому режим мультикиоска можно настроить для офисного рабочего места, например для оператора колл-центра. При этом лицензия Windows 10 IoT Enterprise позволяет создавать множество учетных записей, а это значит, что на устройстве фиксированного назначения можно создать отдельную учетную запись для отдельного пользователя с индивидуальными настройками.

          Читать дальше →
        • Ненужные расширения для VS Code

          • Translation
          Недавно я занялся тщательным исследованием VS Code и сделал несколько интересных находок. Как оказалось, в редакторе есть довольно много возможностей и настроек, позволяющих отлично решать те же задачи, которые решают многие популярные расширения.



          Здесь речь пойдёт о шести сферах применения расширений, в которых эти расширения могут быть заменены стандартными механизмами VS Code.
          Читать дальше →
        • Игра на WebAssembly, часть 2: уровни и опыт, админка

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

            Demo
            Читать дальше →
          • Тетрис на битбордах: старые песни на новый лад

              image

              Битборды (Bitboard) — специальные битовые структуры, позволяющие эффективно рассчитывать ходы в настольных играх. На хабре писали про применение битбордов к шахматам и даже к шашкам. Сегодня мы применим технику битбордов к несколько неожиданной, но всем знакомой игре – к тетрису. Результатом наших изысканий будет консольная игра, а также автоматический поиск лучших ходов (при заданной последовательности фигур), скорость которого как раз и обеспечивается эффектиностью битовых манипуляций. Заодно мы поддержим проигрывание найденных ходов в автоматическом режиме, чтобы в полной мере насладиться компьютерным интеллектом. В конце статьи дана ссылка на гитхаб с кодом игры на C#, а также коротенькое видео игры из 114 ходов, найденной компьютером поиском в глубину за пятнадцать минут.

              Обычно битборд – это машинное слово, состоящее из нескольких байт, каждый бит которого соответствует одной клетке поля в игре. Так, в шахматах всего 64 клетки, что соответствует 8-байтному слову (ulong в C#), а в шашках – 32 (uint в C#). Любители тетриса наверняка помнят, что размер поля в стандартном тетрисе – 10 на 20 клеток, то есть, 200 бит, что не влезает ни в один числовой тип. Конечно, можно разбить поле на четыре части и использовать четыре восьмибайтных слова, или можно не мелочиться и использовать массив из двадцати двухбайтных слов, по одному слову на каждую линию поля; все реализации тетриса на битбордах, которые я нашел (в количестве одной штуки), так и делают. Но мы пойдем другим путем…
              Читать дальше →
            • Пептид для прекрасной мулатки


                PT-141, который навсегда поменял представления о гаремах в восточных странах

                Сухое вещество всех живых организмов состоит примерно на 90 процентов из белков, жиров и углеводов. Это биополимеры, которые мы едим. Эти же организмы используют белковый конструктор, чтобы обмениваться сигналами внутри организма, как одну из систем связи. Если сигнал быстрый, может использоваться нервная сеть. Если медленный и действует на большие области — может использоваться химический стимул. Большая часть веществ, используемых, как своего рода «информационные агенты», имеет пептидную природу. Наиболее интересны среди них гормоны — они пептиды тоже по большей части.

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

                Одним из первых массовых пептидов стал Бремеланотид (PT-141), известный как «виагра для женщин». С ним проблема в том, что испытания безопасности закончились в тот момент, когда соединение уже лет семь подряд было доступно на рынке. Эффект комплексный: используется в спорте, вызывает потемнение кожи (эффект загара) и существенно повышает женское либидо, используется для коррекции желания и эрекции у мужчин.

                Потом понеслось в косметике. Почему важно использовать пептиды после испытаний и строго по назначению — потому что были случаи открытия соединений, замечательно разглаживающих морщины кожи. Только вот девять из десяти тестовых овец умерли от асфиксии. Зато гладкими как младенцы.
                Читать дальше →
                • +36
                • 13.4k
                • 7
              • Стартап внутри корпорации

                  Привет, меня зовут Андрей Ванин и я занимаюсь разработкой и запуском брокерских и финтех-продуктов. Сегодня ровно год как я работаю в БКС, где в команде из восьми человек мы развиваем проект fintarget.ru.

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

                  image
                  Читать дальше →
                • В России заблокирован доступ ко всем DNS-серверам DigitalOcean

                    Сегодня днём в выгрузке (отдаваемый Роскомнадзором провайдерам список доменов и IP-адресов, доступ к которым должен ограничиваться на территории РФ) появились адреса всех трёх DNS-серверов популярного хостера DigitalOcean.
                    Читать дальше →
                  • Angular schematics, или как я писал свой шаблон для angular cli

                    Здравствуйте, меня зовут Максим. Уже несколько лет я занимаюсь front-end разработкой. Мне часто приходится иметь дело с версткой различных html шаблонов. В своей повседневной работе я обычно пользуюсь сборщиком webpack c настроенным шаблонизатором pug, а также использую методологию BEM. Для того чтобы облегчить себе жизнь использую замечательный пакет.


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


                    Кому интересно как я все это провернул добро пожаловать под кат.

                    Читать дальше →
                  • Как найти работу с релокацией в Европу: практический гайд для IT-специалистов

                    • Translation
                    Сам по себе поиск работы в сфере IT достаточно прост. Что же касается поиска вакансий с возможность релокации, здесь уже сложнее. Несмотря на то, что технологические компании по всему миру сейчас активно нанимают разработчиков и других IT-специалистов из-за рубежа, поиск таких вакансий забирает достаточно много сил и времени.

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

                    Telegram-каналы



                    Джоб-борды для IT-специалистов и нишевые сайты


                    AngelList


                    На сегодняшний день AngelList является одним из наиболее популярных сайтов по поиску работы в стартапах по всему миру. Процесс поиска вакансий с релокацией на этом сайте очень прост – во вкладке «Compensation» выбираем опцию «Company Will Sponsor Visa». Чтобы сузить полученный список вакансий до максимально релевантных, можно использовать фильтры «Role» и «Location».

                    image

                    Glassdoor


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

                    Чтобы найти вакансии, которые предлагают релокейт, пишем в поисковой строке relocation developer или relocation и название интересной вам позиции. Чтобы сузить результаты поиска, уточняем город/страну, куда хотели бы переехать.

                    image

                    Поскольку на сайте Glassdoor нет специального фильтра для поиска работы с переездом, при поиске вакансий описанным выше методом могут попадаться нерелевантные. В целом же, ключевое слово relocation в поисковой строке делает свое дело.
                    Читать дальше →
                  • Фаззинг — важный этап безопасной разработки

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



                      И это при том, что в мире разработки достаточно давно появились такие понятия, как Security Development Life Cycle (SDLC), и сравнительно недавно такие, как DevSecOps или SecDevOps, но используются эти техники далеко не всеми. Суть у них одна — внедрять подходы к повышению безопасности с первых этапов разработки, а лучше начинать с обучения сотрудников. И, конечно, важно уделять внимание защищенности продукта от атак на протяжении всего его жизненного цикла. За подробностями — добро пожаловать под кат.

                      Читать дальше →
                    • Optlib. Реализация генетического алгоритма оптимизации на Rust

                        В этой статье описывается библиотека optlib, предназначенная для решения задач глобальной оптимизации на языке Rust. На момент написания этой статьи в этой библиотеке реализован генетический алгоритм нахождения глобального минимума функции. Библиотека optlib не привязана к конкретному типу входных данных для оптимизируемой функции. Также библиотека построена таким образом, что при использовании генетического алгоритма можно легко менять алгоритмы скрещивания, мутации, отбора и другие этапы работы генетического алгоритма. По сути генетический алгоритм собирается как бы из кубиков.
                        Читать дальше →
                      • Как правильно «фармить» Kaggle

                          image
                          *фарм — (от англ. farming) — долгое и занудное повторение определенных игровых действий с определенной целью (получение опыта, добыча ресурсов и др.).


                          Введение


                          Недавно (1 октября) стартовала новая сессия прекрасного курса по DS/ML (очень рекомендую в качестве начального курса всем, кто хочет, как это теперь называется, "войти" в DS). И, как обычно, после окончания любого курса у выпускников возникает вопрос — а где теперь получить практический опыт, чтобы закрепить пока еще сырые теоретические знания. Если вы зададите этот вопрос на любом профильном форуме, то ответ, скорее всего, будет один — иди решай Kaggle. Kaggle — это да, но с чего начать и как наиболее эффективно использовать эту платформу для прокачки практических навыков? В данной статье автор постарается на своем опыте дать ответы на эти вопросы, а также описать расположение основных грабель на поле соревновательного DS, чтобы ускорить процесс прокачки и получать от этого фан.

                          проверить глубину этой кроличьей норы
                        • Как участвовать в соревнованиях по машинному обучению. Лекция в Яндексе

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


                            — Всем привет. Меня зовут Артур Кузин, я lead data scientist компании Dbrain.
                            Читать дальше →
                          • AI, практический курс. Предисловие

                            • Translation


                            Блог Intel начинает публикацию русского перевода большой серии статей со специализированного ресурса Intel AI Academy. Цель этой публикации — представить разнообразные подходы к искусственному интеллекту и различные способы его применения. Первый пост серии будет в некотором роде предисловием: здесь вы найдете вступительную часть от авторов курса, а также полный список статей на английском и (по мере публикации) на русском языках.

                            Надеемся, что наш курс окажется для вас полезным.
                            Читать дальше →
                            • +15
                            • 10.5k
                            • 1
                          • Как освоить иностранный язык без преподавателя. Часть 2. «Пошаговая стратегия»

                              Languages are not taught, they are learnt!


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


                              Примечание: Материалы статьи опираются на исследования Е.Д. Авериной, Д.Б. Никуличевой, Э.В. Гуннемарка и П.Нейшна, пропущенные через призму моего восприятия и опыт изучения 3 иностранных языков.

                              Читать дальше →
                            • Понимание оракулов в блокчейне

                                Перевод статьи Thomas Bertani из блога компании Oraclize.

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

                                Оракул — это третья сторона, вы общаетесь с оракулом когда вам нужны данные, которые вы не хотите (или не можете) извлекать самостоятельно. Причин для этого может быть много.

                                С одной стороны, вы можете не доверять отдельному объекту при подписании multi-signature транзакции Bitcoin. Например, вы хотите чтобы некоторые средства были перемещены только при определенных условиях. Вместо того, чтобы делать это самостоятельно (что не дает никаких гарантий внешним сторонам) или делегировать это третьей стороне (которой вы не хотите доверять, поскольку она может вести себя некорректно), вы разделяете процесс подтверждения транзакции различным сторонам (оракулам) через multi-signature транзакцию.

                                Путь с использованием N-of-M multi-signature транзакций заключается в том, что каждый оракул имеет только один закрытый ключ, и может поставить только одну подпись в тот момент когда он сочтет это нужным, но сама транзакция будет действительна одна и N-of-M оракулы будут иметь консенсус относительно того, какая транзакция должна пройти. Это намного правильней, чем доверять одной из внешних сторон, поскольку выбранные оракулы могут конкурировать и вы получаете низкую вероятность мошенничества.
                                Читать дальше →
                                • +14
                                • 16.3k
                                • 2
                              • LLVM для исследователей

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

                                Что такое LLVM?


                                LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

                                LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

                                LLVM имеет несколько ключевых отличий от других компиляторов:

                                • Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
                                Читать дальше →
                                • +64
                                • 48.4k
                                • 6