Сегодня (8 мая 2019) мы объявляем о релизе Dart 2.3 SDK с новыми языковыми конструкциями, которые улучшают ваш опыт разработки при создании пользовательских интерфейсов, новой поддержкой инструментов для разработки Flutter UI и двумя новыми веб-сайтами: dart.dev и pub.dev.
Рубрика «Программирование» - 265
Анонсирован Dart 2.3: оптимизирован для разработки пользовательских интерфейсов
2019-05-11 в 10:16, admin, рубрики: dart, Dart 2.0, dartlang, flutter, ПрограммированиеЕсли уже стучат в дверь: как защитить информацию на устройствах
2019-05-11 в 8:39, admin, рубрики: HideMe.ru, HideMy.name, vpn, анонимность в интернете, Блог компании HideMy.name, защита данных, защита информации, защита устройств, интернет-безопасность, информационная безопасность, конфиденциальность, копирайт, Программирование, технологии, хранение данныхНесколько предыдущих статей в нашем блоге были посвящены вопросу безопасности персональной информации, которая пересылается при помощи мессенджеров и социальных сетей. Теперь пришло время поговорить о мерах предосторожности относительно физического доступа к устройствам.
Адаптация программ для ZX Spectrum к TR-DOS современными средствами. Часть 1
2019-05-11 в 1:35, admin, рубрики: assembly, retrocomputers, Z80, zx spectrum, защита информации, Программирование, реверс-инжиниринг, старое железоВ отличие от современных компьютеров, на спектрумах понятия файловой системы не было как такового. Это значит, что загрузка с каждого типа носителя требовала отдельной реализации и в большинстве случаев программу нельзя было просто так скопировать с кассеты на дискету. В случаях, когда загрузчик программы был написан на бейсике, его можно было адаптировать к TR-DOS довольно простой доработкой. Однако ситуация осложнялась тем, что во многих играх (как фирменных так и взломанных) загрузчики были написаны в машинных кодах и иногда содержали защиту от копирования.
Несмотря на наличие «волшебной кнопки», которая просто делала полный дамп памяти компьютера и позволяла хоть как-то сохранить программу на дискету, среди специалистов считалось хорошим тоном создавать дисковые версии игр с сохранением оригинальной загрузочной картинки и прочих атрибутов.
В этой статье я расскажу, как выполнить такую адаптация на примере игры Pac-Man, а именно, оригинального образа Pac-Man.tzx.
Должны ли строки в Python быть итерируемы?
2019-05-10 в 16:24, admin, рубрики: python, Программирование, Проектирование и рефакторинг, строкиИ сотворил Гвидо строки по образу C, по образу массивов символов сотворил их. И увидел Гвидо, что это хорошо. Или нет?
Представьте, что вы пишете совершенно идиоматичный код по обходу неких данных с вложенностью. Beautiful is better than ugly, simple is better than complex, так что вы останавливаетесь на следующем варианте кода:
from collections.abc import Iterable
def traverse(list_or_value, callback):
if isinstance(list_or_value, Iterable):
for item in list_or_value:
traverse(item, callback)
else:
callback(list_or_value)
Вы пишите юнит-тест, и что бы вы думали? Он не работает, причём не просто не работает, а
>>> traverse({"status": "ok"}, print)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in traverse
File "<stdin>", line 4, in traverse
File "<stdin>", line 4, in traverse
[Previous line repeated 989 more times]
File "<stdin>", line 2, in traverse
File "/usr/local/opt/python/libexec/bin/../../Frameworks/Python.framework/Versions/3.7/lib/python3.7/abc.py", line 139, in __instancecheck__
return _abc_instancecheck(cls, instance)
RecursionError: maximum recursion depth exceeded in comparison
Как? Почему? В поисках ответа вы погрузитесь в удивительный мир коллекций бесконечной глубины.
Читать полностью »
Генерация кода для бекенда. Что генерировать, как и зачем?
2019-05-10 в 11:13, admin, рубрики: asynchronous, callback, code generation, coroutines, java, kotlin, vertx, генерация кода, ПрограммированиеЯ хочу показать в этой статье как у нас в фирме генерируется бекенд (и немного фронтенд) код, зачем вообще это нужно и как это лучше делать.
Что именно будем генерировать — не так важно.
Важно что мы опишем 3 вида объектов на основе которых сгенерируем взаимодействие фронтенда с бекендом, а кое где и полностью реализацию бекенда
Эти типы объектов:
1. Messages — объекты, которые будучи сериализoванными в JSON участвуют в обмене информации между фронтендом и бекендом
2. Endpoints — URI, который вызывает фронтенд вместе с описанием HTTP метода, параметров запроса, типа Request Body и типа респонса
3. Entities — Это такие messages, для которых них есть стандартные endpoints для Create/Update/List/Delete (может быть не все), они хранятся в базе данных и для них есть Data Access Object, или Spring JPA repository — вообщем зависит от технологии, но какой то доступ к базе данных
Фронтендом я не занимаюсь вообще, но
1) Знаю, что он пишется на Typescript, поэтому мы генерируем и классы тайпскрипта
2) Большая часть требований к бекенду приходит от разработчиков фронтенда.
Требования к коду
Apache Kafka и потоковая обработка данных с помощью Spark Streaming
2019-05-10 в 5:03, admin, рубрики: amazon, Amazon Web Services, AWS, big data, kafka streams, postgresql, python, RDS, spark, spark streaming, tutorial, облачные сервисы, ПрограммированиеПривет! Сегодня мы построим систему, которая будет при помощи Spark Streaming обрабатывать потоки сообщений Apache Kafka и записывать результат обработки в облачную базу данных AWS RDS.
Представим, что некая кредитная организация ставит перед нами задачу обработки входящих транзакций «на лету» по всем своим филиалам. Это может быть сделано с целью оперативного расчета открытой валютой позиции для казначейства, лимитов или финансового результата по сделкам и т.д.
Как реализовать этот кейс без применения магии и волшебных заклинаний — читаем под катом! Поехали!
Ember.js: (снова) время попробовать
2019-05-08 в 15:46, admin, рубрики: ember, Ember.js, emberjs, javascript, single page applications, введение, одностраничное приложение, Программирование, Разработка веб-сайтов, фронтенд-фреймворкиЯ написал эту статью по мотивам выступления, которое я делал в meetup-группе Berlin.js. Последнее время выходит очень мало русскоязычных материалов об этом достаточно популярном и стабильном фреймворке и я решил немного исправить эту ситуацию.
Вы учите Ember.js один раз, а потом применяете эти знания на всех Ember.js проектах. Этот тезис я попытаюсь раскрыть под катом.
Пишем HTTP-1.1 & HTTP-2 клиент и сервер на Golang
2019-05-08 в 14:09, admin, рубрики: Go, golang, Блог компании Skillbox, Программирование, разработка, языки программирования
Golang — отличный язык программирования с широким спектром возможностей. В этой статье показано, как на Go можно написать клиент и сервер для протоколов HTTP/1.1 и HTTP/2.
Читать полностью »
Мины под производительностью ждут своего часа
2019-05-08 в 12:06, admin, рубрики: java, java 11, java 8, java производительность, ПрограммированиеВ этой статье я расскажу о минах, заложенных под производительность, а также об их обнаружении (желательно ещё до взрыва) и обезвреживании.
Привет! Представляю вашему вниманию перевод статьи "Long Names Are Long" автора Bob Nystrom.
Одно из умных вещей которые делает Google это строгие code review. Каждое изменение, прежде чем вам разрешат его внести в основную ветку, рассматривается как минимум в двух направлениях. Во-первых, кто-то в команде делает обычную проверку, чтобы убедиться, что код выполняет то, что должен.
Но затем происходит вторая ступень, когда проверяется читабельность кода. Это гарантирует, что другие разработчики смогут поддерживать этот код в будущем. Легко ли понять и поддерживать данный код? Соответствует ли этот код стилю и идиомам языка? Хорошо ли задокументирован код?
Использование языка Dart в Google постепенно набирает обороты, и я много занимался подобными code review. Для разработчика языка это очень увлекательный процесс. Я получаю из первых рук представление о том, как люди используют Dart, что действительно полезно для его развития. У меня есть более четкое представление о том, какие ошибки являются общими, и какие функции интенсивно используются. Я чувствую себя как этнограф, ведущий дневник о жизни туземцев.
Но, в любом случае, дело не в этом. Черт бы его побрал, дело даже не в Darts. То, о чем я хожу поговорить, — это то, что я вижу во многих кодах, и что сводит меня с ума: излишне длинные имена.