Pull to refresh
2
0

Разработчик

Send message

SSL pinning во Flutter

Reading time7 min
Views11K
Всем привет! Меня зовут Михаил Зотьев, я Flutter-разработчик и тимлид в Surf.

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

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


Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments7

Fuchsia OS от Google выходит из тени: ее установят на Google Nest Hub

Reading time3 min
Views13K

На Хабре многие внимательно следят за судьбой молодой Fuchsia OS от Google. Долгое время ее предназначение и позиционирование оставались достаточно туманными. Компания рассказывала о том, что ОС можно использовать на широком спектре разных устройств, но, где именно, оставалось лишь догадываться.

Похоже, что вскоре эту ОС можно будет «потрогать». Как оказалось, в Сеть утекли спецификации нового умного устройства Google, обновленной модели Nest Hub. И ее программное обеспечение — как раз эта загадочная операционная система. Вполне может быть, что она быстро станет чем-то большим, чем нишевой ОС, как это случалось с другими платформами.
Читать дальше →
Total votes 61: ↑57 and ↓4+53
Comments3

Открытый бета-тест новой версии Хабра

Reading time2 min
Views177K
Много лет существовали две версии Хабра: десктопная и мобильная. Они использовали разный стек технологий, поэтому на разработку каждой новой фичи мы тратили вдвое больше времени. К тому же десктопная версия давно устарела, что добавляло ещё больше проблем. Десктопную версию писали, без преувеличения, несколько поколений разработчиков, поэтому некоторые из используемых технологий успели окончательно устареть. Последние несколько лет каждая новая фича становилась верхушкой айсберга рефакторинга и копаний в legacy-коде. В конечном счёте мы устали от этого «монстра» и решили победить его.


Читать дальше →
Total votes 128: ↑119 and ↓9+110
Comments837

Сервис на языке Dart: введение, инфраструктура бэкэнд

Reading time8 min
Views20K
Оглавление
1. Введение
2. Backend
2.1. Инфраструктура.
2.2. Доменное имя. SSL.
2.3. Серверное приложение на Dart.

3. Web
3.1. Заглушка «Under construction»

4. Mobile


Введение


Меня, Flutter-разработчика, знакомые часто спрашивают: «Что же такое язык Dart?». Качают головой со словами: «А вот Петя серьёзные транспорты на Java пишет, а в Яндексе вообще плюсы в проде...». Ну что ж, пожалуй, действительно, Dart далёк от практик «фабрик для создания фабрик» из Java. Однако если стоит задача реализовать клиентские приложения сразу для нескольких платформ, не утонув в потоке задач по синхронизации разработчиков разных целевых ОС; создать целостный UI, узнаваемый, но специфичный для Android, iOS и веб и в целом уложиться в адекватные бюджет и сроки, — здесь Flutter не имеет конкурентов. И эти вопросы стоят вдвойне если у вас… стартап.

Итак, легенда: некий стартап решил создать новый сервис… ну, например, для
обмена списками покупок
Такая себе идея для стартапа, я знаю, но если я выпущу ещё один ToDo лист в этот мир, мне будет стыдно :)
между пользователями сервиса. Цель стартапа — выпустить MVP за три месяца на трех платформах (плюс четвертая — сервер, конечно).

10 лет назад я бы сказал, что этот кейс не имеет решения и постарался бы держаться от него подальше, 3 года назад решением мог стать стек ReactNative/React/NodeJs, в 2020 году для этого есть Dart. Добро пожаловать в атмосферу разработки альфа версии сервиса, я постараюсь наглядно пройти и объяснить весь процесс разработки. Код всех приложений будет выложен в паблик. Комментарии, включая набросы и холивары, приветствуются. Спросить автора «по существу» или просто посоветоваться можно в Telegram канале нашего отдела.


Читать дальше →
Total votes 26: ↑22 and ↓4+18
Comments28

Ты добавил всего две строчки. Почему на это ушло два дня?

Reading time3 min
Views63K
На первый взгляд вопрос кажется разумным, но он делает некоторые ужасные предположения:

  • строки кода = усилие
  • строки кода = значение
  • все строки кода равны

Ничто из этого не является истинным.

Почему исправление, которое кажется таким простым, заняло два дня?
Читать дальше →
Total votes 157: ↑152 and ↓5+147
Comments225

Передача данных через анимированные QR на Gomobile и GopherJS

Reading time12 min
Views33K

В данной статье я хочу рассказать о небольшом и забавном проекте выходного дня по передаче файлов через анимированные QR коды. Проект написан на Go, с использованием Gomobile и Gopherjs – последний для веб-приложения для автоматического замера скорости передачи данных. Если вам интересна идея передачи данных через визуальные коды, разработка веб-приложений не на JS или настоящая кроссплатформенность Go — велкам под кат.


txqr demo

Читать дальше →
Total votes 128: ↑124 and ↓4+120
Comments92

Работа со строками на этапе компиляции в современном C++

Reading time20 min
Views31K


Если вы программируете на C++, то наверняка задавались вопросом почему нельзя сравнить два строковых литерала или выполнить их конкатенацию:


auto str = "hello" + "world"; // ошибка компиляции

if ("hello" < "world") { // компилируется, но работает не так, как ожидалось
    // ...
}

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

Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments47

Внеплановый пятничный анонс

Reading time2 min
Views9.6K
Всем привет! Сегодня у нас внеплановый выход на связь со всеми авторами Хабра, так как вчера мы превратили в фичу один баг новой мобильной версии Хабра (которая была анонсирована 3 сентября).

Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments71

Моё разочарование в софте

Reading time11 min
Views388K

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


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

Для примера, современные автомобили работают, скажем, на 98% от того, что физически позволяет нынешняя конструкция двигателя. Современная архитектура использует точно рассчитанное количество материала, чтобы выполнять свою функцию и оставаться в безопасности в данных условиях. Все самолёты сошлись к оптимальному размеру/форме/нагрузке и в основном выглядят одинаково.

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
Total votes 505: ↑474 and ↓31+443
Comments2474

Всем лучшим учителям посвящаетя…

Reading time8 min
Views3.9K
Я вырос в небольшой городке Алтайского края на берегу реки Бия, недалеко от того места, где она сливается с Катунью. Городок этот, в сущности, ничем не отличался от сотен других крошечных городов — бывших дореволюционных уездных центров, разросшихся однотипными блочными пятиэтажками в советскую эпоху вокруг какого-нибудь НИИ или «городообразующего предприятия». Таких щедро раскидано по просторам Нашей Необъятной.

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

image
Это мы с друзьями по дороге из школы в далеком не то 84м не то 85м году.

А еще в нашей окраине, там где дорога сразу после автобусной остановки разветвлялась и одной своей веткой уходила в сторону школы и потом через площадь с кинотеатром и спортивным комплексом Заря в направлении «лодочной», а другой упиралась в проходную местного химического НИИ, там, на развилке, спиной в лес стоял Купол. Мы называли его Купол в соответствии с его очевидными архитектурными особенностями, а так, для всех остальных это был Планетарий или Дом Детского Творчества имени Савченко.

image
Бийский Дом Детского Творчества имени Савченко Я.Ф.
Читать дальше →
Total votes 45: ↑43 and ↓2+41
Comments16

История 1-го «айпада»

Reading time5 min
Views11K
Перед прочтением этого текста хочу предупредить о двух вещах. Здесь будет несколько эмоционально об Apple. И второе, — когда-то я был Apple-евангелистом. Теперь нет.

image


В далеком 2010, будучи в Америке, в Applestor я купил 1-й iPad. Этот iPad прожил до 5-й с чем-то версии своей OS и подсказал мне, что все остальные версии он больше не выдержит. C кучей приложений внутри, которые перестали обновляться, но не перестали служить, он продолжал жить у нас в квартире без чехла, защитной пленки и прочей лабуды, выживая среди трех детей и двух собак с кошками…
Читать дальше →
Total votes 58: ↑29 and ↓290
Comments53

Мобильная версия Хабра. Версия 3.0

Reading time5 min
Views21K
Возможно, кто-то из вас сейчас впервые окажется на мобильной версии Хабра, а кто-то наоборот скажет, что «это уже третья версия и что ни говори, а в 2009 году она была самой-самой». Как бы там ни было, в этот раз захотелось сделать не просто анонс новой мобильной версии. Приятно было именно отмотать время назад и вспомнить, как всё было.
Читать дальше →
Total votes 110: ↑103 and ↓7+96
Comments213

Лента новостей: почему мы делаем это неправильно?

Reading time6 min
Views14K

Здравствуй, меня зовут Дмитрий Карловский и у меня для вас новость. Ну как новость, свежий взгляд на привычную вещь в виде очередной статьи. Скорее всего вы попадёте на неё из какой-либо ленты новостей. Или не попадёте, если новость будет опубликована не вовремя. Независимо от того, насколько данная статья была бы вам интересна.


Типичная лента новостей


Всё дело в том, как формируются ленты и как пользователь с ними взаимодействует. И тут, к сожалению, как обычно, самое простое решение — предельно неправильное. Давайте разберёмся почему.

Читать дальше →
Total votes 22: ↑17 and ↓5+12
Comments20

Эти токсичные, токсичные собеседования

Reading time8 min
Views104K


Всё началось, когда автор Ruby on Rails признался миру:

Total votes 205: ↑197 and ↓8+189
Comments734

Websocket в продакшене

Reading time30 min
Views41K
10 месяцев назад я начал делать браузерную игрушку. Выбор пал на cocos js в качестве графики и websocket в качестве общения с сервером. Технология очень понравилась и я на ней организовал всё общение игры с сервером. Использовал для этого эту статью. Но, к сожалению, тот код, который приведен в той статье, нельзя использовать в продакшене. Как выяснилось, уровень проблемы даже не критический, а блокирующий. Всё настолько плохо, что мне пришлось переписывать всё общение с сервером с вебсокетов на longpooling. В итоге я оставил вариант «если у нас браузер не сафари, то использовать websocket, иначе longpolling» и ещё немного ветвления на эту тему.

Так что опыт использования вебсокет в продакшене накопился приличный. И вот недавно случилось событие, которое сподвигло меня написать первую статью на Хабре.
Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments70

Беспроводная настройка ESP8266 в прошивке DeviceHive v 0.3

Reading time3 min
Views19K


Good news, everyone! Вышла новая версия прошивки DeviceHive для ESP8266. Мы реализовали поддержку самых популярных интерфейсов для подключения устройств: GPIO, ADC, PWM, UART, I2C, SPI, 1-wire. Теперь можно легко подключить устройства с этими интерфейсами к нашему облачному сервису. А самое главное — появилась возможность беспроводного конфигурирования прошивки (см. скриншот ниже). Об этом мы сегодня и поговорим.



Тройной RESET, или «Поехали!»


При создании IoT-устройств с беспроводным подключением часто можно столкнуться с неприятной проблемой: настроить устройство конечному пользователю не так легко, как кажется. Такие устройства обычно не оснащены экраном и клавиатурой, поэтому задать начальные настройки (данные Wi-Fi-сети, например) не выйдет без подходящего кабеля и специализированного ПО. Эту проблему мы и попытались решить в новой версии прошивки.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments6

Mini-Desktop своими руками. 2.0

Reading time7 min
Views58K
Для тех, кто не читал предыдущий материал, расскажу вкратце, что речь шла о разработке корпуса со встроенным блоком питания для самостоятельной сборки настольного компьютера на базе материнских плат стандарта Thin Mini-ITX.

image

Как и ранее, основная концепция не изменилась. Под выражением «настольный компьютер» я подразумеваю (как минимум) возможность установки любого процессора из линейки Intel Core i Desktop Processors, встроенный блок питания и возможность установки не менее 2-х внутренних накопителей информации. Также, должна быть предусмотрена возможность подсоединения как внутренних, так и внешних беспроводных антенн.

В предыдущем дизайне обеспечивалась выборочная совместимость с материнскими платами Thin Mini-ITX. Мне показалось это несправедливым, и я переработал дизайн для совместимости со всеми существующими платами этого стандарта. Так же, кардинально была пересмотрена система охлаждения. Итак, обо всем подробнее…
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments83

Тонкости nodejs. Часть I: пресловутый app.js

Reading time5 min
Views42K
Я работаю с node.js более трех лет и за это время успел хорошо познакомиться с платформой, ее сильными и слабыми сторонами. За это время платформа сильно изменилась, как, собственно, и сам javascript. Идея использовать одну среду и на сервере и на клиенте пришлась многим по душе. Еще бы! Это удобно и просто! Но, к сожалению, на практике все оказалось не так радужно, вместе с плюсами платформа впитала в себя и минусы используемого языка, а разный подход к реализации практически свел на нет плюсы от использования единой среды. Так все попытки реализовать серверный js до ноды не взлетели, взять тот же Rhino. И, скорее всего, node ждала та же участь, если бы не легендарный V8, неблокирующий код и потрясающая производительность. Именно за это его так любят разработчики. В этой серии статей, я постараюсь рассказать о неочевидных на первый взгляд проблемах и тонкостях работы, с которыми вы столкнетесь в разработке на nodejs.

Читать дальше →
Total votes 55: ↑48 and ↓7+41
Comments20

Действительно мощный и компактный ПК

Reading time2 min
Views197K
Некоторые новинки очень настораживают. Это то открытый ноутбук без клавиатуры и без диска за $1'995 на базе слабого ARM процессора, то «универсальный» и «мощный» ПК Tango размером со смартфон за $350, фактически совершенно бесполезный без второй док-станции, которая стоит как половина этого ПК, в том случае если всё-таки носить вычислительный модуль между работой и домом.

Я давно присматриваюсь заменить свой ноутбук на что-то, причём ноутбуки с момента появления планшета меня как таковые интересовать совершенно перестали.
Хотелось что-то совсем компактное, и я начал копать в сторону форм-фактора nano-ITX и pico-ITX, но ничего достаточно производительного за разумные деньги так и не нашлось.

Зато нашлась вот такая буквально поллитровка, несущая в себе 4е поколение Intel Core, Haswell.



Если по картинке не понятно, то этот ПК всё же чуть меньше, чем уже упоминавшаяся док-станция для Tango (108mm x 115mm x 30mm vs 135mm x 135mm x 27mm).

Поставляется с вмонтированным в материнскую плату процессором. Линейка процессоров:

— Intel® Core™ i7-4500U 1.8 GHz – 3.0GHz (turbo), Intel HD 4400
— Intel® Core™ i5-4200U 1.6 GHz – 2.6GHz (turbo), Intel HD 4400
— Intel® Core™ i3-4010U 1.7 GHz, Intel HD 4400
— Intel® Celeron™ 2955U 1.4 GHz, Intel HD

Существует также и модель на базе AMD A8-5545M 1.7G/2.7GHz.

Продаётся такое чудо как модель для сборки, для полной комплектации которой необходима память (можно вставить до 16ГБ, осторожно, подходит только DDR3 на 1.35В, не 1.5В) и диск mSATA.
Стоимость в зависимости от процессора колеблется на зарубежных сайтах от $250 до $500. Комплект из двух планок памяти общим объёмом 8ГБ можно приобрести приблизительно за $100, примерно столько же обойдётся и mSATA SDD на 128ГБ. WiFi b/g/n и Bluetooth 4.0/3.0 уже на борту, занимают единственный PCIe порт.

Ещё о нескольких моделях той же серии и пара картинок
Total votes 107: ↑102 and ↓5+97
Comments103
1

Information

Rating
Does not participate
Registered
Activity