Как стать автором
Обновить
baal @baal read-only

Пользователь

  • Публикации
  • Комментарии

Основы оптимального стиля. Когнитивно-ориентированный анализ удобочитаемости текста программы

Блог компании EPAMПрограммированиеСовершенный код

epam


Грубо говоря, очевидно, что некоторые виды форматирования лучше других.
— Стив Макконелл, Совершенный код.


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

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Просмотры4.4K
Комментарии 47

Как клеить по 13 девушек в час, используя машинное обучение и Tinder

Блог компании RUVDS.comХостингPythonМашинное обучениеЛайфхаки для гиков
*Исключительно ради изучения Machine Learning, разумеется. Под немного недовольным взглядом любимой жены.

Наверное, нет столь простого до уровня спинно-мозговых рефлексов приложений, как Tinder. Для того чтобы им пользоваться достаточно одного пальца, чтобы свайпать и немного нейронов, чтобы выбирать девушек или мужчин, которые тебе больше нравятся. Идеальная реализация брутфорса в выборе пары.

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


Читать дальше →
Всего голосов 152: ↑144 и ↓8+136
Просмотры118K
Комментарии 138

SwiftUI по полочкам

Разработка под iOSРазработка мобильных приложенийДизайн мобильных приложений
Из песочницы
Tutorial
Каждый раз, когда в языке программирования появляется новый Фреймворк, рано или поздно, появляются люди, которые изучают язык именно с него. Вероятно так было и в IOS разработке во времена появления Swift: поначалу он рассматривался как дополнение к Objective-C — но я этого уже не застал. Сейчас, если начинаешь с нуля, выбор языка уже не стоит. Swift вне конкуренции.

То же самое, но в меньшем масштабе, происходит и с фреймворками. Появление SwiftUI — не исключение. Вероятно, я — представитель первого поколения разработчиков, кто стартовал с изучения SwiftUI, проигнорировав UIKit. У этого есть своя цена — обучающих материалов и примеров работающего кода пока очень мало. Да, в сети уже есть некоторое количество статей, рассказывающих о той или иной особенности, том или ином инструменте. На том же www.hackingwithswift.com уже довольно много примеров кода с объяснениями. Однако, они слабо помогают тем, кто решил изучать SwiftUI с нуля, как я. Большинство материалов в сети — это ответы на конкретные, сформулированные вопросы. Опытный разработчик легко разберется, как все устроено, почему именно так, и зачем это нужно применять. Новичку же, сначала нужно понять, какой вопрос задать, и только тогда он сможет добраться до этих статей.



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

Надеюсь статья поможет вам сэкономить некоторое время, когда вы тоже захотите ощутить немного магии.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Просмотры33K
Комментарии 29

Политкорректность проникает в Россию через книги про проектирование чипов на SystemVerilog для не-начинающих

Высокая производительностьНенормальное программированиеАнализ и проектирование системПараллельное программированиеFPGA
Наконец-то в России вышел учебник по SystemVerilog уровнем выше чем для начинающих. Учебник описывает технологии и приемы, которые спрашивают на интервью в NVidia, Intel, AMD, Apple и другие электронные компании: использование concurrent assertions и functional coverage, что сейчас требуют не только от инженеров по верификации, но и от дизайнеров микросхем; алгоритм работы симулятора с дельта-циклами; вменяемое объяснение static timing analysis; схемы коммуникации аппаратных блоков через аппаратные очереди; реализацию этих коммуникаций с помощью конечных автоматов с трактами данных и т.д.

В главе про последнее российского читателя может озадачить упоминание «политкорректной системы». Что бы это значило? Это вероятно намек на казус, который произошел в округе Лос-Анжелес в 2003 году. Чиновники Лос-Анджелеса попросили производителей, поставщиков и подрядчиков прекратить использование терминов «master/slave» («хозяин» и «раб») в отношении компьютерного оборудования, так как одному из работников округа эти термины напомнили про рабовладельческое прошлое.

Сейчас авторы технической литературы избегают терминов master/slave. В современной Америке работают и афро-американские инженеры (например София Мвокани из Камеруна — на фото слева), и использование старых терминов выглядит архаично, как выглядели бы например термины «пан/холоп» в украинской технической литературе вместо принятых «провідний/ведений» (рус. «ведущий/ведомый»).

Это не первый раз, когда в российском электронном образовании появляется тема борьбы афро-американцев за гражданские права. Например Татьяна Волкова, известный специалист по образованию в электронике, носит маечку с эмблемой «Черных Пантер», калифорнийского движения, которое в свое время сочло мирный протест недостаточным, и занялось вооруженным протестом.



Полное изображение эмблемы под кожанкой Татьяны Александровны — под катом, но в основном я буду рассказывать про дельта-циклы и конечные автоматы:
Читать дальше →
Всего голосов 43: ↑32 и ↓11+21
Просмотры14K
Комментарии 40

Что почитать проектному менеджеру: книги про управление персоналом, soft skills и DevOps

Блог компании ИТ ГильдияУправление проектами
Мы в «ИТ Гильдии» уделяем особое внимание вопросам управления проектами и помогаем другим компаниям внедрять инструменты, которые оптимизируют работу в IT-отделах.

Сегодня мы собрали несколько полезных книг для PM’ов. В подборку вошла литература, которую рекомендуют к прочтению в тематических тредах на Hacker News, Reddit и Quora.

Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Просмотры15K
Комментарии 1

Очень много YouTube-каналов для прокачки английского языка для программистов

ПрограммированиеЛайфхаки для гиковИзучение языков
Tutorial
Привет, Хабр!

С помощью YouTube можно ощутимо и сравнительно быстро улучшить английский.
Понимание на слух как минимум. Истина не нова, но мало кто смотрит английский YouTube, потому что легко потеряться в бесконечности каналов. Но для вас я собрал самые стоящие каналы!

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

Поучить английский


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

EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
Читать дальше →
Всего голосов 59: ↑52 и ↓7+45
Просмотры57K
Комментарии 19

Шпаргалка для стажера: пошаговое решение задач на собеседовании Google

Блог компании SkillboxПрограммированиеУчебный процесс в IT
Перевод
image

В прошлом году последние пару месяцев я потратил на подготовку к собеседованию для стажировки в Google (Google Internship). Все прошло хорошо: я получил и работу, и отличный опыт.

Теперь, спустя два месяца после стажировки, я хочу поделиться документом, который использовал для подготовки к собеседованиям. Для меня это было чем-то типа шпаргалки перед экзаменом. Но процесс создания документа и постоянная пошаговая проверка по нему помогли мне запомнить все самое важное.
Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Просмотры15K
Комментарии 1

Ищем свободное парковочное место с Python

PythonData MiningИскусственный интеллектБудущее здесь
Перевод
image

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

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

image

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

Поэтому давайте немного развлечёмся и напишем точную систему уведомлений о свободной парковке с помощью Python и глубокого обучения
Читать дальше →
Всего голосов 110: ↑107 и ↓3+104
Просмотры45K
Комментарии 53

Интеграция Jira с GitLab

IT-инфраструктура
Из песочницы

Цель


При коммите в git упоминаем в комментарии какую-либо задачу из Jira по имени, после чего происходит две вещи:

  • в GitLab название задачи превращается в активную ссылку на нее в Jira

  • в Jira к задаче добавляется комментарий со ссылками на коммит и пользователя, его совершившего, а также добавляется сам текст упоминания
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Просмотры22K
Комментарии 5

AWS показал Open Source средний палец

Блог компании HaulmontOpen sourceMongoDBAmazon Web Services
Перевод

От переводчика: мне кажется, заголовок слегка неточный и на самом деле средний палец показали ребятам из MongoDB, которая теперь не очень то и Open Source.



Сегодня, Amazon AWS запустил продукт DocumentDB — новую базу данных, совместимую с API MongoDB. Компания описывает DocumentDB так — "быстрая, масштабируемая и отказоустойчивая документная база данных, разработанная так, чтобы быть совместимой с вашими существующими приложениями и инструментами на MongoDB". Фактически, это полная замена MongoDB, развёрнутая в AWS, которая не использует код MongoDB.


В AWS утверждают, что, хотя MongoDB отлично справляется со своими задачами, их клиентам всё же трудно создавать быстрые и высокодоступные приложения на платформе с открытым исходным кодом, которые смогут масштабироваться до нескольких терабайт и сотен тысяч операций чтения и записи в секунду. Поэтому компания создала свою собственную базу данных документов, но сделала ее совместимой с API MongoDB 3.6, распространяющимся под лицензией Apache 2.0.

Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Просмотры25K
Комментарии 39

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

ПрограммированиеУчебный процесс в IT
Из песочницы

Когда твой парень - fullstack


Когда твой парень — fullstack


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


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


Как бы не так!


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


И вот однажды она приходит к тебе и торжественно заявляет:
— Я готова! Готова учиться программированию! Давай!


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


О том, как я, не имея никакого практического опыта в обучении, решил ввести в программирование человека, объяснившего, что «ты же умный» и «всё у нас получится», расскажу под катом.


Добро пожаловать!

Читать дальше →
Всего голосов 76: ↑50 и ↓26+24
Просмотры49K
Комментарии 310

Telegram на MacOS [предположительно] тоже локально хранит переписку в доступном виде

Информационная безопасностьМессенджерыСоциальные сети и сообщества
image
Иллюстрация bleepingcomputer.com

Никогда такого не было, и вот опять…
Исследователь из США Натаниэль Сачи обнаружил, что приложение Telegram не защищает шифрованием локальную копию переписки пользователя:



Telegram хранит ваши сообщения в незашифрованной базе данных SQLite. По крайней мере, мне не пришлось прилагать усилия, чтобы найти ключ в этот раз. Хотя [сообщения] довольно трудно просматривать (наверное, надо написать какой нибудь вспомогательный скрипт на python?) — это очень похоже на проблему с Signal


UPD Информация подается в том виде, в каком она была в первоисточнике и твиттере исследователя.
UPD 2 Поступил разоблачительный комментарий от Павла Дурова
Читать дальше →
Всего голосов 45: ↑26 и ↓19+7
Просмотры26K
Комментарии 95

«Яндекс» задумался о защите от поглощений, если Сбербанк разрешит

IT-компании
В акционерной структуре «Яндекса» могут произойти важные изменения. Как стало известно «Коммерсанту», сейчас Аркадий Волож с топ-менеджерами обсуждают новый манёвр, который позволит защитить компанию от враждебного поглощения.

Как рассказал источник, близкий к руководству «Яндекса», обсуждаемая структура предполагает, что 60% голосов будет контролировать фонд под управлением основателя Аркадия Воложа и 10–12 топ-менеджеров с российским гражданством. Для этого будут выпущены новые акции класса Б-1, 80% которых получит Волож, а в случае его отхода от дел — сам фонд. У фонда не будет права отчуждать эти акции.

Но парадокс в том, что такой манёвр требует согласия Сбербанка, которому принадлежит золотая акция «Яндекса» и который является главным кандидатом на враждебное поглощение.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Просмотры8.5K
Комментарии 10

Обновление Siri Shortcut

Разработка под iOSСофт
Перевод


Помимо анонсов о новый iPad и Mac, Apple также выпустила новую версию для Siri Shortcuts. Приложение впервые было представлено на WWWC и пришло вместе с iOS12 как способ раскрыть потенциал Сири с помощью создания своих команд и макросов. Теперь, приложение умеет делать новые вещи, такие как настройки времени и таймера, получение последнего прогноза погоды и т.д.
Читать дальше →
Всего голосов 12: ↑7 и ↓5+2
Просмотры3K
Комментарии 4

Курс MIT «Безопасность компьютерных систем». Лекция 14: «SSL и HTTPS», часть 1

Блог компании ua-hosting.companyИнформационная безопасностьПрограммированиеАнализ и проектирование системIT-инфраструктура
Перевод
Tutorial

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Просмотры11K
Комментарии 2

Самое краткое введение в Reactive Programming

JavaScriptNode.JSФункциональное программирование

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


Возьмем такую задачу:
Есть некий сервис c REST API и endpointом /people. При POST-запросе на этот endpoint'a создается новая сущность. Написать функцию которая принимает массив объектов вида { name: 'Max' } и создают набор сущностей посредством API(по-английски, это называется batch-операция).


Давайте решим эту задачу в императивном стиле:


const request = require('superagent')

function batchCreate(bodies) {
  const calls = []
  for (let body of bodies) {
    calls.push(
      request
        .post('/people')
        .send(body)
        .then(r => r.status)
    )
  }
  return Promise.all(calls)
}

Давайте, для сравнения, перепишем этот кусочек кода в функциональном стиле. Для простоты, под функциональным стилем мы будем понимать:


  1. Применение функциональных примитивов(.map, .filter, .reduce) вместо императивных циклов(for, while)
  2. Код организован в "чистые" функции – они зависят только от своих аргументов и не зависят от состояния системы
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Просмотры15K
Комментарии 40

Автоматизируем сборку iOS приложений с помощью Fastlane

Блог компании СберРазработка под iOSРазработка мобильных приложенийТестирование мобильных приложений
Tutorial

Как часто нам, iOS разработчикам, приходится собирать приложение для загрузки в iTunes Connect App Store Connect? В процессе этапа активного бета-тестирования приложения нужно оперативно фиксить баги и поставлять обновленную сборку для тестирования. А также необходимо скачивать сертификаты, Provision profiles, прокликивать много разных галочек и кнопочек при каждой выкладке нового билда.


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


В этом посте я расскажу: что такое fastlane и как быстро начать его использовать в своих iOS проектах.

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Просмотры23K
Комментарии 10

Apple блокирует возможность независимого ремонта новых моделей MacBook

ГаджетыDIY или Сделай сам


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

В США относительно недавно была одержана небольшая победа сторонников «права на ремонт». Но корпорации все равно берут свое. Например, Apple закрывает возможность независимого ремонта новых моделей Macbook. Эта информация была получена журналистами Motherboard из внутренней документации Apple, которая попала в руки представителей СМИ.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Просмотры46K
Комментарии 287

Написать Telegram клиент — легко

Я пиарюсь


Чем отличается Telegram от других популярных мессенджеров? Он — открытый!
Другие мессенджеры тоже имеют API, но почему-то именно телеграм известен как наиболее открытый из самых популярных?


Начнем с того, что у Telegram действительно полностью открытый клиентский
код. К сожалению, мы не видим комиты каждый день прямо на GitHub, но у нас есть код под открытой лицензией. Архитектура Telegram подразумевает, что и Bot и API имеет практически такие же методы — https://core.telegram.org/methods.


На самом деле, Telegram представляет не просто чат-мессенджер, а социальную платформу, доступ к которой открыт для разного рода приложений. Они могут предоставлять дополнительные фишки пользователям, взамен используя готовую сеть пользователей и сервера для доставки сообщений. Звучит настолько привлекательно, что нам захотелось попробовать написать своего "клиента" для Телеграм.

Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Просмотры65K
Комментарии 11

Курс MIT «Безопасность компьютерных систем». Лекция 9: «Безопасность Web-приложений», часть 3

Блог компании ua-hosting.companyИнформационная безопасностьПрограммированиеАнализ и проектирование системIT-инфраструктура
Перевод
Tutorial

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Просмотры6.9K
Комментарии 0

Информация

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