Уже 4 года я занимаюсь техническим развитием детей в России. Начиналось всё с открытия небольшого кружка роботехники и со временем переросло в комплексный детский технический центр. Сегодня я подготовил для вас инструкцию к запуску собственного детского центра.
JS / Flutter Fullstack
13 подвохов мобильного приложения, о которых лучше знать до старта разработки
Главная сложность в разработке приложения – накодить его функционал. Например, сделать редактирование текста для приложения-блокнота. Так я полагал, когда был моложе и наивнее.
С тех пор я запустил три приложения руками разработчиков и ещё одно собственноручно. Не бог весть какой опыт, но иллюзий поубавилось. А реализация функционала видится мне теперь самой простой и прогнозируемой задачей из всех.
Хочу поделиться краткой выжимкой из своего опыта: какие неожиданные сложности вас ждут, если вы делаете мобильное приложение впервые.
Работа с асинхронностью в Dart
Всем привет! Меня зовут Дмитрий Репин, я Flutter-разработчик в Surf.
В этой статье я расскажу о том, как работать с асинхронностью в Dart: всё о самых важных классах библиотеки dart:async с примерами под катом. Поговорим о том, как в однопоточном языке сходить в сеть или базу данных и при этом не затормозить приложение.
Чаты на вебсокетах в iOS, если у вас WAMP
Разработка заняла примерно 9 месяцев, а я занимался реализацией клиент-серверного общения по сокету для iOS. Особенности нашей ситуации:
- Поддержка старых версий iOS, где нативных методов для общения по сокетам ещё не было — пришлось искать рабочую библиотеку и фиксить баги.
- Протокол WAMP на бэкенде — предстояло научить клиент декодировать any, декодировать протоколы и создать объект, который отвечает за отправку и приём сообщений.
Примечание: описанные ниже способы декодирования, можно применить и в других задачах.
Личный IM-мессенджер со сквозным шифрованием только для своих
Сейчас есть много IM-мессенджеров с end-to-end шифрованием, но вариантов, которые можно быстро развернуть на своем сервере гораздо меньше.
Изучая варианты, мой взгляд упал на Delta Chat, о котором на Хабре уже упоминали — мессенджер без централизованной серверной инфраструктуры, использующий почтовые сервера для доставки сообщений, что позволяет развернуть его, например, на своем домашнем сервере и общаться с устройств, в том числе не имеющих доступ в интернет.
Среди преимуществ этого подхода можно отметить:
- Вы сами управляете своей информацией, в том числе ключами шифрования.
- Вы не отдаете свою адресную книгу никому.
- Нет необходимости использовать телефонный номер для регистрации.
- Наличие клиентов под все популярные системы: Windows, Linux, Android, MacOS, iPhone.
- Дополнительное шифрование STARTTLS/SSL при передаче сообщений, обеспечиваемое почтовым сервером.
- Возможность настроить удаление старых сообщений с устройства (исчезающие сообщения).
- Возможность настроить удаление сообщений с сервера, при получении.
- Быстрая доставка, благодаря IMAP push.
- Групповые защищенные чаты.
- Поддержка передачи файлов, фото и видео.
- Сервер и клиент относятся к открытому ПО и совершенно бесплатны.
Возможные недостатки:
- Нет возможности создавать нативные аудио и видео конференции.
- Необходимость экспортировать/импортировать ключи шифрования, для настройки одного аккаунта на нескольких устройствах.
Интересный факт: Роскомнадзор уже требовал от разработчиков Delta Chat предоставить доступ к пользовательским данным, ключам шифрования и зарегистрироваться в государственном реестре провайдеров, на что Delta Chat ответили отказом, т.к. не имеют собственных серверов и не имеют доступа к ключам шифрования.
Как работает память в Python
Ни одна компьютерная программа не может работать без данных. А данные, чтобы программа имела к ним доступ, должны располагаться в оперативной памяти вашего компьютера. Но что такое оперативная память на самом деле? Когда произносишь это словосочетание, многие сразу представляют «железную» плашку, вставленную в материнскую плату, на которой написано что-то типа 16Gb DDR4 2666MHz. И они, разумеется, правы — это действительно физический блок оперативной памяти, в котором, в итоге, все данные и оказываются. Но прежде, чем стать доступной внутри вашей программы, на память (как и на всё остальное аппаратное обеспечение) накладывается куча абстракций.
Сбер выложил русскоязычную модель GPT-3 Large с 760 миллионами параметров в открытый доступ
Источник изображения
Что делает Free API Московской биржи в Google Таблицах
Количество частных инвесторов на Московской бирже удвоилось за последний год и составило 3,86 млн: за 2019 счета на Мосбирже открыли 1,9 млн человек. Санкт-Петербургская биржа, специализирующаяся на торгах акциями иностранных компаний, в прошлом году зафиксировала трехкратный прирост счетов – с 910 000 до 3,06 млн шт.
Это означает, что на рынок пришло почти 2 млн новичков, которые никогда не занимались трейдингом и не использовали специализированный софт для торгов и учета позиций.
Полиморфизм для начинающих
Dart. Всё, что надо знать про константы
Константы — это не просто странная версия final
переменных, которая будет преследовать вас во сне со всеми связанными с ними ошибками. Compile-time
константы – это хороший способ повысить производительность вашего приложения, не создавая один и тот же объект несколько раз, а так сказать, «предварительно создавая» объекты во время компиляции.
const или final?
Давайте, разберемся с этим вопросом, прежде чем перейти к более глубокому изучению констант. Со стороны может показаться, что не имеет значения, у вас ключевое слово const
или final
перед переменной. Эти переменные не могут быть изменены после их объявления.
Flutter. Keys! Для чего они?
Параметр key
можно найти практически в каждом конструкторе виджета, но используют этот параметр при разработке достаточно редко. Keys
сохраняют состояние при перемещении виджетов в дереве виджетов. На практике это означает, что они могут быть полезны для сохранения местоположения прокрутки пользователя или сохранения состояния при изменении коллекции.
Данная статья адаптирована из следующего видео. Если вы предпочитаете слушать / смотреть, а не читать, то видео предоставит вам тот же материал.
Фишеры icloud и где они обитают
Если у тебя чешутся руки — попробуй осилить этот текст.
История больше похожа на комикс, так как содержит более 50 изображений, поэтому аккуратнее, если ты с мобильного. А ещё — тут скорее всего нарушается 152-ФЗ, поэтому я не удивлюсь, если её удалят, так что читай быстрее. Эта история пока не имеет конца, но у нее есть начало…
Как в Намибии защищают диких животных + IoT-ошейники
Щенок морского котика, который уже почти не боится людей. Страна удивительна тем, что можно почесать носик даже львёнку, но лучше делать это из машины.
Дано: у вас есть страна, в которой живут всякие прикольные обитатели: носороги, слоны, леопарды, гепарды и прочие куда менее опасные зверьки. У нас как-то принято думать, что если есть дикий зверь — он должен сидеть в лесу. Лес — он как бы ничейный. А в Намибии почти вся земля — это либо фермы, либо колхозы, либо пустыня. То есть «ничейных» мест для диких животных там попросту нет.
Проблема в том, что те же слоны, зашедшие в гости на ферму, не отличают дикую траву и буш от того, что выращивают фермеры. А жрут они, как насосы. А ещё слоники не самые лёгкие и элегантные зверьки, поэтому оставляют за собой полосу разрушений. Правда, взамен они предлагают помёт, и тоже много. Но фермерам такой обмен не очень нравится.
С леопардами ещё веселее. Они хрумкают овец и коз, плюс в какой-то момент могут глюкнуть и догадаться, что человек — довольно простая добыча.
Самка леопарда Электра с радиомаяком на шее у границы территории Оконжимы (за этим участком можно ходить без машины)
И вот в этих условиях вам нужно и сохранить природу, и сельское хозяйство.
Операторы ?., ?? и |>: будущие возможности JavaScript, которые вам понравятся
?.
, ??
и |>
.О стандарте ECMAScript и развитии JavaScript
Если вы уже знакомы с особенностями деятельности рабочей группы ECMA TC39, с тем, как она осуществляет отбор и обработку предложений о совершенствовании JavaScript, вы вполне можете пропустить этот раздел. Если же вы из тех, кому интересно об этом узнать — вот краткий обзор того, чем занимается TC39.
JavaScript — это реализация стандарта, называемого ECMAScript, который был создан для стандартизации реализаций языка, которые появились в ранние годы существования веб-браузеров.
Существует восемь редакций стандарта ECMAScript и семь релизов (четвёртая редакция стандарта не выходила, после третьей сразу идёт пятая). Разработчики JavaScript-движков приступают к реализации новшеств языка после выхода стандарта. Здесь можно увидеть, что не каждый движок реализует все возможности, при этом некоторым движкам для введения новшеств требуется больше времени, чем другим. Хотя такое положение дел и не идеально, это, всё же, лучше, чем полное отсутствие стандартов.
Как сделать ваш HTML отзывчивым, добавив одну строку кода на CSS
В этой статье я научу вас, как использовать CSS Grid для создания крутой сетки изображений, которая изменяет количество столбцов в зависимости от ширины экрана или окна браузера.
Самое крутое, что для добавления отзывчивости потребуется написать одну строчку кода на CSS
SVG или canvas?
SVG и canvas — это технологии, которые можно использовать для рисования чего-либо на веб-страницах. Поэтому их стоит сравнить и разобраться в том, когда стоит применять SVG, а когда — canvas. Даже весьма поверхностное понимание сути этих технологий позволяет сделать вполне осознанный выбор. Собственно говоря, вот — две типичных ситуации, в одной из которых стоит предпочесть SVG, а в другой — canvas:
- Нужно нарисовать небольшую иконку? Это, безусловно, территория SVG.
- Нужно создать интерактивную браузерную игру? Тут, определённо, нужна технология canvas.
Автор статьи, перевод которой мы сегодня публикуем, говорит, что знает о том, что пока не раскрыл причины такого выбора. Но он надеется, что эти причины станут совершенно очевидными после того, как он поделится некоторыми подробностями об SVG и canvas.
PHPExcel и большие файлы
На хабре уже был пост про эту библиотеку - Универсальное чтение ячеек в PHPExcel. Я остановлюсь только лишь на главном минусе PHPExcel — вечно памяти не хватает, все время сыпятся ошибки «Fatal error: Out of memory». Этот пост о том, как это обойти.
Информация
- В рейтинге
- Не участвует
- Откуда
- Краснодарский край, Россия
- Зарегистрирован
- Активность