Рассказываю как я структурирую макеты дизайна сайта.
Пользователь
midi-bluetooth клавиатура на esp32
Несколько лет тому назад ко мне в руки попала компактная драм-машина от небезызвестных teenage engineering. Тогда меня очень поразила идея — использовать печатную плату как часть корпуса и элемент дизайна устройства. С тех пор мне хотелось тоже собрать аналогичное по стилистике устройство. В результате я собрал простую midi-bluetooth клавиатуру, которая легко подключается к ноутбуку или айфону.
Простые стейт-машины на службе у разработчика
Начинает он с одного выпадающего окошка, тестирует анимацию, выставляет ease out 100% и наслаждается полученным результатом. Но вскоре он понимает, что для того, чтобы управлять менюшкой, хорошо бы знать закрыто оно сейчас или нет. Мы-то с вами тут программисты опытные, все понимаем, что нужно добавить флаг. Не вопрос, флаг есть.
var opened = false;
Вроде, работает. Но, если быстро кликать по кнопке, меню начинает моргать, открываясь и закрываясь не успев доанимироваться в конечное состояние. Вася добавляет флаг animating. Теперь код у нас такой:
var opened = false;
var animating = false;
function onClick(event) {
if (animating) return;
if (opened) close();
else open();
}
Через какое-то время Васе говорят, что меню может быть полностью выключено и неактивно. Не вопрос! Мы-то с вами тут программисты опытные, все понимаем, что… нужно добавить ЕЩЕ ОДИН ФЛАГ! И, всего-то через пару дней разработки, код меню уже пестрит двустрочными IF-ами типа вот такого:
if (enabled && opened && !animating && !selected && finishedTransition && !endOfTheWorld && ...) { ... }
Вася начинает задаваться вопросами: как вообще может быть, что animating == true и enabled == false; почему у него время от времени все глючит; как тут вообще поймешь в каком состоянии находится меню. Ага! Состояния... О них дальше и пойдет речь.
Знакомьтесь, это Вася.
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)
Если у вас возникли вопросы или пожелания, но вы не можете здесь писать то переходите в VK: vk.com/topic-200545792_46641967
Дополнительно, обращаю внимание что сейчас (2021 год) написан небольшой редактор для программирования на ассемблере, в котором так же был написан код аналогичной функциональности, но с использованием «плюшек и удобных подушек» редактора, посмотреть конкретно про написание мигалки в нем можно в статье Assembler Editor Plus: Использование модулей (возможно в процессе прочтения нужно будет пройти еще по нескольким ссылкам где будет описано про функциональность редактора в общем, и как выполняется создание проекта, компиляция, прошивка, отладка)
Итак, в прошлой статье мы создали инструмент при помощи которого, можно произвести компиляцию и компоновку (линковку) проекта на языке ассемблера. Теперь напишем программу за работой которой можно наблюдать.
Как устроены дыры в безопасности: переполнение буфера
Прим. переводчика: Это перевод статьи Питера Брайта (Peter Bright) «How security flaws work: The buffer overflow» о том, как работает переполнение буфера и как развивались уязвимости и методы защиты.
Беря своё начало с Червя Морриса (Morris Worm) 1988 года, эта проблема поразила всех, и Linux, и Windows.
Переполнение буфера (buffer overflow) давно известно в области компьютерной безопасности. Даже первый само-распространяющийся Интернет-червь — Червь Морриса 1988 года — использовал переполнение буфера в Unix-демоне finger для распространения между машинами. Двадцать семь лет спустя, переполнение буфера остаётся источником проблем. Разработчики Windows изменили свой подход к безопасности после двух основанных на переполнении буфера эксплойтов в начале двухтысячных. А обнаруженное в мае сего года переполнение буфера в Linux драйвере (потенциально) подставляет под удар миллионы домашних и SMB маршрутизаторов.
По своей сути, переполнение буфера является невероятно простым багом, происходящим из распространённой практики. Компьютерные программы часто работают с блоками данных, читаемых с диска, из сети, или даже с клавиатуры. Для размещения этих данных, программы выделяют блоки памяти конечного размера — буферы. Переполнение буфера происходит, когда происходит запись или чтение объёма данных большего, чем вмещает буфер.
На поверхности, это выглядит как весьма глупая ошибка. В конце концов, программа знает размер буфера, а значит, должно быть несложно удостоверится, что программа никогда не попытается положить в буфер больше, чем известный размер. И вы были бы правы, рассуждая таким образом. Однако переполнения буфера продолжают происходить, а результаты часто представляют собой катастрофу для безопасности.
19 советов по повседневной работе с Git
Если вы регулярно используете Git, то вам могут быть полезны практические советы из этой статьи. Если вы в этом пока новичок, то для начала вам лучше ознакомиться с Git Cheat Sheet. Скажем так, данная статья предназначена для тех, у кого есть опыт использования Git от трёх месяцев. Осторожно: траффик, большие картинки!
Содержание:
- Параметры для удобного просмотра лога
- Вывод актуальных изменений в файл
- Просмотр изменений в определённых строках файла
- Просмотр ещё не влитых в родительскую ветку изменений
- Извлечение файла из другой ветки
- Пара слов о ребейзе
- Сохранение структуры ветки после локального мержа
- Исправление последнего коммита вместо создания нового
- Три состояния в Git и переключение между ними
- Мягкая отмена коммитов
- Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
- Игнорирование пробелов
- Добавление определённых изменений из файла
- Поиск и удаление старых веток
- Откладывание изменений определённых файлов
- Хорошие примечания к коммиту
- Автодополнения команд Git
- Создание алиасов для часто используемых команд
- Быстрый поиск плохого коммита
[UPDATE] Луна-27 получит PILOT и PROSPECT
Исследование Луны имеет высокий приоритет в Федеральной космической программе, включающей серию роботизированных миссий в ближайшие 10 лет: орбитальный аппарат, посадочные аппараты и доставка лунного грунта на Землю из полярной области Луны. Планы исследования предусматривают последовательное усложнение миссий, шаг за шагом от простых к сложным. Первая миссия — «Луна-25» (Луна-Глоб) демонстрационно-испытательная, целью которой является полет к Луне и посадка на её поверхность. Научная нагрузка минимальна, аппарат послужит отработке систем дальней космической связи, управления и посадки. Успех продемонстрирует способность Роскосмоса к посадке на Луну и готовности к более сложным исследовательским миссиям.
Введение в CMake
Искусство командной строки
Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.
7 правил создания красивых интерфейсов
Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Именно поэтому мы решили её перевести. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.
Вступление
Сначала о главном. Это руководство не для всех. Это руководство прежде всего для:
- разработчиков, которые хотят уметь делать хорошие интерфейсы для себя, если вдруг прижмёт;
- UX-дизайнеров, которые знают, что хороший UX-дизайн продаётся лучше в красивой UI-упаковке.
Если вы ходили в художественную школу или считаете себя хорошим дизайнером интерфейсов, то скорее всего это руководство покажется вам а) скучным, б) неправильным или даже в) вызывающим раздражение. Это нормально. Просто закройте эту вкладку и двигайтесь дальше.
А пока давайте я расскажу, что вы найдёте в этой статье.
Знакомство с Nim: пишем консольную 2048
Хочется чего-то нового, быстрого, компилируемого, но при этом приятного на ощупь? Добро пожаловать под кат, где мы опробуем язык программирования Nim на реализации очередного клона игры 2048. Никаких браузеров, только хардкор, только командная строка!
В программе:
- Who is the Nim?
- Как выглядит ООП в Nim
- Немного C под капотом
- Создание экземпляров
- Собственно игра 2048 (github)
- Субъективные выводы
STM32 на MAC OS
В микроконтроллерах я к сожалению абсолютный ноль, и мне пришлось начать гуглить и читать кучу статей. Спустя некоторое время, когда стала ясна разница между архитектурой Фон Неймана и Гарвардской, и другими базовыми вещами, нужно было выбрать микроконтроллер с которым я буду работать.
Из-за простоты необходимых мне возможностей я остановился на PIC, но коллега вовремя наставил меня на путь праведный и сказал копать в сторону STM и AVR, так как себестоимость не на много больше а возможности на порядок выше.
И вскоре я приобрел отладочную плату STM32F4 Discovery kit for STM32F407
В первый день носился с ней по дому и радовался как мигают LEDы и работает гироскоп. Но пора бы начать и самому писать программы. После 30 минут гугления я понял что 95% решений описанных в интернете работают под Windows, а счастливые обладатели Linux и Mac OS гуляют лесом. Я провел 3 дня по вечерам в поисках решений и в итоге имеем полный мануал как начать программировать под STM32 под Mac OS.
Самодельный велокомпьютер, или как Arduino на улицу попал
Здравствуй, Хабр! Мне хотелось бы поделиться историей о создании велокопомпьютера своими руками. После покупки велосипеда я решил как-то фиксировать свой прогресс, но мобильные трекеры оказались не самым удобным решением, а из Китая ко мне уже летел заранее заказанный там BOGEER 823, что делало покупку на месте бессмысленной. Поэтому я решил попытаться сделать велокомп своими руками, заодно заложив в него основу для расширения: управление обвесом велосипеда (передний и задний свет, звонок).
Как я бросил университет ради разработки собственной игры. Часть 1
Привет, Хабрахабр! Наверняка, многие из вас задумывались о разработке собственной игры, но, к сожалению, существует много факторов, которые, всё же, не позволяют нам начать работу над игрой своей мечты: учеба, работа, семья и т.д. Да и, к тому же, мы просто боимся бросить всё и осуществить свою мечту, ибо многих пугает неизвестность, которая нас поджидает, как только мы отклонимся от общепринятых стремлений. В данной статье я расскажу вам о своём нелегком пути к воплощению идеи, ради которой я поставил все на кон.
Argparse — парсим аргументы и параметры командной строки с легкостью
Python на примере демона уведомления о новых коммитах Git
Язык — Python!
В статье упоминается:
1. Демон на Python;
2. Логирование на Python;
3. Хранение конфигурационных файлов программ на Python;
4. Работа с командами ОС из скриптов Python;
5. Получения списка последних изменений из git’а;
6. Стандартные всплывающие уведомления Ubuntu.
Хакспейсы Китая, часть 2. Шэньчжэнь, TechSpace, фото-экскурсия
Сегодня пятница, завтра выходные, кто-то поедет отдыхать на природу, кто-то будет в гараже с автомобилем, кто-то дома за компьютером, а кто-то проведёт их в хакспейсе за сборкой роботов в компании гиков).
В прошлой статье мы начали рассказывать про китайские хакспейсы, в этой статье совершим небольшую экскурсию по TechSpace в городе Шэньчжэнь (кстати именно в этом городе делают продукцию Apple), посмотрим, что у них интересного, окунемся в рабочую атмосферу.
USB TV-тюнеры на rtl2832 — или как услышать в радиоэфире все за 600 рублей
До недавнего времени, это удовольствие обходилось от 300$ и до бесконечности. Ну а с переходом гос.органов (и России и за бугром) на цифровую (но пока еще не зашифрованную) связь APCO P25 стоимость удовлетворения нездорового любопытства стала ещё выше.
Год назад все изменилось — умельцы выяснили, что многие из продающихся у нас китайских USB TV-тюнеров за 600 рублей — фактически являются универсальным радиоприёмником, на который без каких-либо доработок можно послушать практически все-что угодно в диапазоне 50-900Мгц (если повезет — до 2200Мгц, но там голосом особо ничего не передают): переговоры самолётов с диспетчерами, строителей, такси, жучки в вашей квартире и многое другое.
Под катом я расскажу что и где покупать, как подключить и настраивать, ну и наконец — что можно послушать.
Тайны кнопок в Android. Часть 1: Основы верстки
В своем цикле статей по разработке Android-приложений я хочу поделиться с вами интересными и полезными приемами верстки сложных элементов управления. Мы рассмотрим как базовые приемы верстки, так и продвинутые способы ее оптимизации, которые существенно облегчают развитие и сопровождение Android-приложений, экономят время и деньги.
Первая часть предназначена для начинающих разработчиков. Я покажу, как сделать достаточно сложную кнопку исключительно версткой, не применяя Java-кода, ни тем более собственных компонентов. Знание этих приемов верстки пригодится и при работе с другими компонентами Android. По ходу статьи я буду подробно пояснять, что означают те или иные константы, атрибуты, команды и тому подобное. Но я также буду давать ссылки на официальную документацию Google, где вы можете подробно изучить каждую тему. Данная статья обзорная, я не ставлю цели привести здесь всю документацию, переведенную на русский язык. Поэтому я рекомендую изучать официальные источники, в частности те статьи, ссылки на которые я привожу здесь.
Pixel-perfect верстка Android макетов
UPD: Пост спорный, но много ценных советов в комментариях
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность