Как стать автором
Обновить
1
0

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

Отправить сообщение

Работа с клавиатурой в iOS: как минимизировать копипасту

Время на прочтение6 мин
Количество просмотров3.2K

При разработке практически любого мобильного приложения разработчику придётся столкнуться с полями ввода. А где поля ввода — там и клавиатура, а также логика, связанная с обработкой событий её жизненного цикла: появления, сокрытия, изменения размеров.

Кто разрабатывал приложение под iOS, знает, что работа с клавиатурой — это часть очень похожего или даже одинакового кода, название которому — копипаста. Как мы с ним в Surf боролись и насколько удалось сократить кодовую базу, рассказываем в статье.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Что стоит знать при переходе на Mac

Время на прочтение9 мин
Количество просмотров94K

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

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

Надеюсь, кому-то на Хабре это поможет и сделает переход менее болезненным. А если вы сами давно пользуетесь Mac, дополняйте в комментариях, наверняка я что-то ценное упустил.

Читать далее
Всего голосов 147: ↑130 и ↓17+151
Комментарии403

Как организовать тестирование БД в dUnit

Время на прочтение7 мин
Количество просмотров7.7K
Как известно, в xUnit-фреймворках, простейший test-case состоит из последовательности вызовов SetUp, TestSomething, TearDown. И довольно часто в unit-тестировании требуется подготовить какие-то ресурсы перед основными тестами. Типичный пример этого — соединение с базой данных. И логика подсказывает нам, что было бы весьма затратно, запуская несколько тестов, перед каждым устанавливать соединение с БД в SetUp, и отключаться в TearDown.

Пример модуля
...
type
  TTestDB1 = class(TTestCase)
  protected
  public
    procedure SetUp; override;
    procedure TearDown; override;
  published
    procedure TestDB1_1;
    procedure TestDB1_2;
  end;
...
implementation
...
procedure TTestDB1.SetUp;
begin
  inherited;
  // connect to DB
end;

procedure TTestDB1.TearDown;
begin
  // disconnect from DB
  inherited;
end;
...
initialization
  RegisterTest(TTestDB1.Suite);
end.



Схема вызовов будет такая:

-- TTestDB1.SetUp
---- TTestDB1.TestDB1_1
-- TTestDB1.TearDown
-- TTestDB1.SetUp
---- TTestDB1.TestDB1_2
-- TTestDB1.TearDown

К тому же с БД может статься, что перед тем, как к БД подключиться, её нужно создать с требуемой структурой.

Для решения такой задачи в dUnit есть класс TTestSetup (описан в модуле TTestExtensions).
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии2
Здравствуйте! Мы подразделение «Лаборатории Касперского», которое разрабатывает безопасную операционную систему KasperskyOS. Наша цель — создать ОС, у которой есть кибериммунитет, поэтому ей не страшно доверить управление умными автомобилями, сложными техническими процессами и важными информационными системами. Хотим рассказать, как идет развитие проекта, какие технологии лежат в его основе и что получается на выходе. Ну и немного о нашей внутренней структуре: кто и чем занимается, как выстраивается работа на удаленке, а также как попасть к нам в команду.
Узнать →
Всего голосов 30: ↑23 и ↓7+28
Комментарии54

10 интересных репозиториев на GitHub, полезных любому разработчику

Время на прочтение4 мин
Количество просмотров83K
Представляем вам перевод статьи Simon Holdorf, опубликованной на сайте medium.com. В ней вы найдете ссылки на полезные репозитории, с помощью которых можно прокачать навык разработки ПО.


Фото с ресурса Unsplash. Автор: Vishnu R Nair

GitHub — это лучшая платформа для обмена фреймворками, библиотеками и техническими решениями. Однако найти среди этого многообразия действительно полезные репозитории сложно. Поэтому я решил составить список из десяти интересных репозиториев, которые, на мой взгляд, пригодятся любому разработчику.

Каждый из них имеет множество звезд на GitHub, что только подтверждает их популярность, актуальность и полезность. Одни репозитории научат вас чему-то новому, благодаря другим вы сможете создать какие-то классные штуки. В целом, используя их, можно основательно прокачать навык разработки программного обеспечения.
Читать дальше →
Всего голосов 69: ↑64 и ↓5+78
Комментарии14

Разработка веб-сайта на паскале (backend)

Время на прочтение7 мин
Количество просмотров37K
В этой статье я расскажу о том, зачем, почему и как я начал делать сайты на паскале: Delphi / FPC.
Вероятно, «сайт на паскале» ассоццируется с чем-то вроде:

writeln('Content-type: text/html');

Но нет, всё гораздо интереснее! Впрочем, исходный код реального сайта (почти весь) доступен на GitHub.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+53
Комментарии195

О работе ПК на примере Windows 10 и клавиатуры ч. 1

Время на прочтение16 мин
Количество просмотров110K
image

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Читать дальше →
Всего голосов 69: ↑62 и ↓7+71
Комментарии412

Беспроводная HD-видеокамера без батарейки

Время на прочтение4 мин
Количество просмотров20K

ASIC беспроводной HD-видеокамеры. Фото: Вашингтонский университет

Обратное рассеяние (backscattering) — физическое явление, при котором происходит отражение волн, частиц или сигналов в обратном направлении, то есть в сторону источника. Оно традиционно используется в астрономии, фотографии и УЗИ. Но оказывается, что это явление можно использовать для электроники, сенсоров и радиопередатчиков.

В лаборатории сенсорных систем Вашингтонского университета разработали HD-видеомодуль, который передаёт видеопоток 720p и 1080p на 60 FPS с энергопотреблением 321 и 806 мкВт, соответственно. Это в 1000−10000 раз меньше, чем у существующих беспроводных камер. Другими словами, модулю вполне хватит энергии, извлекаемой из окружающей среды (WiFi, свет, вибрация, разница температур, излучение СВЧ и проч.).

Этого удалось добиться за счёт устранения из устройства «лишней» электроники, в том числе АЦП и видеокодера. Сигнал с сенсора передаётся в аналоговом виде через широтно-импульсный модулятор с обратным рассеянием.
Подробнее
Всего голосов 30: ↑27 и ↓3+24
Комментарии21

Шустрый, удобный и кроссплатформенный профилировщик C++ кода

Время на прочтение6 мин
Количество просмотров31K
Всем привет. Несколько месяцев назад мы вместе с victorzs решили сделать простой и удобный профилировщик c++ кода (подразумевается профилирование времени исполнения участков кода, функций).


Скриншот профилирования примера из SDK CryEngine

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

  • Профилировать выбранные участки кода
  • Работать на нескольких платформах
  • Учитывать переключение контекста
  • Требовать минимальных дополнительных затрат памяти во время профилирования
  • Не накладывать дополнительных временных ограничений во время выполнения приложения. Согласитесь, если профилировщик будет работать дольше, чем профилиуремый кусочек кода, то можно сделать некорректные выводы.

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

Если вы хотите знать, сколько времени работает ваш код, и иметь при этом объективные доказательства — прошу под кат, где я покажу, как использовать профилировщик.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии42

Outline: Делаем свой личный VPN от Google за 5$ в месяц (и за 1€ для продвинутых)

Время на прочтение3 мин
Количество просмотров199K
image

В последнее время использовать VPN стало популярно с чего бы это?, но все инструкции которые мне попадались — могут «осилить» только пользователи хотя бы чуть-чуть знакомые с тем что такое Linux. Компания Google всех порадовала, выпустив прекрасное приложение, которое позволяет вам установить VPN в два клика (правда в два!) на своем личном сервере без каких либо знаний.
(Если у вас нет сервера — не беда, появится)
Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии124

Убираем мусор от XCode

Время на прочтение2 мин
Количество просмотров33K
image

На макбуке кончается место, и остро стоит вопрос что бы прибить. Не понятно, куда оно делось? Знакомая ситуация?

Возможно для кого-то будет новостью, что есть куча мусора, оставшаяся после разработки в XCode, который можно безболезненно прибить. Об этом и поговорим…
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии5

Теория вычислений. Введение в конечные автоматы

Время на прочтение5 мин
Количество просмотров94K
Спойлер
Cкажу cразу, что не буду объяснять слишком формально.

Конечные автоматы (finite-state machine)


Это до предела упрощенная модель компьютера имеющая конечное число состояний, которая жертвует всеми особенностями компьютеров такие как ОЗУ, постоянная память, устройства ввода-вывода и процессорными ядрами в обмен на простоту понимания, удобство рас­суждения и легкость программной или аппаратной реализации.

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

У конечных автоматов имеется таблица переходов, текущее состояние автомата, стартовое состояние и заключительное состояние.

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

Пример 1
  • По горизонтали вверху находятся возможные входные символы.
  • По вертикали слева находятся текущие возможные состояния.

image

Здесь видно, что из состояния 0 в состояние 1 можно попасть только, если у нас будет входной символ 'a', из состояния 1 в состояние 2, если символ 'b'.


Текущее состояние — множество состояний в котором автомат может находиться в данный момент времени.

Стартовое состояние — состояние откуда КА начинает свою работу.

Заключительное состояние — множество состояний в которых автомат принимает определенную цепочку символов, в ином случае отвергает.
Read more →
Всего голосов 19: ↑19 и ↓0+19
Комментарии8

Коротко о Shadowsocks, или OpenVPN не нужен (в каждом доме)

Время на прочтение6 мин
Количество просмотров291K
В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика. Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего VPS, — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии77

На злобу дня: кроссплатформенный клиент для Telegram на .NET Core и Avalonia

Время на прочтение9 мин
Количество просмотров21K

В этой статье я расскажу, как реализовать кроссплатформенное приложение на .NET Core и Avalonia. Тема Телеграма очень популярна в последнее время — тем интереснее будет сделать клиентское приложение для него.


Egram


Статья затрагивает достаточно базовые концепции разработки на Avalonia. Тем не менее, мы не будем писать "Hello, World". Вместо этого предлагается рассмотреть реальное приложение. Изучим как общую архитектуру приложения, так и отдельные компоненты.


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


Текст статьи носит обучающий характер, но сам проект вполне реальный. Целью проекта является создание клиента, рассчитанного на использование в качестве рабочего инструмента. Множество идей позаимствовано из других мессенджеров и переложено на модель Telegram.

Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии22

Собственные данные в системном дампе падения Windows

Время на прочтение7 мин
Количество просмотров9.3K

По роду своей деятельности (Windows Kernel) мне регулярно приходится разбирать дампы BSOD'ов. Не единичны случаи, когда у конечного пользователя успешно пишутся только Mini-дампы, в которых сохраняется только значение регистров процессора и стек падения. А другого средства отладки клиентской машины просто нет. Но что делать, если в стеке нет нашего драйвера, а заказчик настаивает, что падения начались после установки продукта и закончились после отключения драйвера этого продукта? В моем случае хорошим решением оказалось ведение небольшого журнала последних событий в циклическом буфере. Осталось только сохранить этот циклический буфер в дампе.


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

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии3

Стэнфордские курсы «Разработка iOS приложений» 2017 — озвучка на русском языке

Время на прочтение1 мин
Количество просмотров9.3K
image image image

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

Было решено попытаться озвучить данный курс на основе переводов неавторизованных конспектов лекций которые выкладывает Татьяна Корнилова на своем сайте.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии4

Автоматизация по сбору данных о росте таблиц и файлов всех баз данных MS SQL Server

Время на прочтение8 мин
Количество просмотров11K

Предисловие


Часто возникает потребность контролировать рост всех таблиц и файлов всех баз данных.

В данной статье будет рассмотрен пример того, как можно автоматизировать сбор данных о росте таблиц и файлов баз данных.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии4

Как эффективнее читать данные с диска (при условии, что у вас .Net)

Время на прочтение7 мин
Количество просмотров12K


Привет, Хабр! Некоторое время назад меня заинтересовал вопрос: как эффективнее всего читать данные с диска (при условии, что у вас .Net)? Задача чтения кучи файлов встречается во множестве программ, которые при самом старте начинают вычитывать конфигурации, некоторые самостоятельно подгружают модули и т.д.

В интернете я не нашел подобных сравнений (если не считать тюнинга под определенные конфигурации).
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии18

Белый список Роскомнадзора: выводы и убытки

Время на прочтение7 мин
Количество просмотров48K
Вы наверняка уже читали о «белом списке» (очередном белом, точнее) Роскомнадзора. Кроме Роскомсвободы о нём поведало и издание vc. В нём — более 2000 позиций.

Я изучил сей документ и вот несколько выводов, неутешительных, которыми хочу поделиться:

  1. Яндекс, Вконтакте, ivi, Телеграм — не полный перечень ресурсов, которые страдают из-за непродуманной системы блокировок. Конечно же, особо хочется выделить Wiki, т.к. с ней проблемы явно будут и не раз ещё. К слову, на vc и Роскомсвободе уже пошутили про *.google.* — и это вновь подтверждает данное опасение.

  2. Список очень длинный, но есть в нём одна явная закономерность: отсутствие закономерностей. Россия — не самая большая страна (если брать именно Рунет, а не площадь географии), но при этом домены государственных и муниципальных органов и учреждений настолько разные по формату — что диву даёшься: тут и распиаренные домены в зоне.рф. (например, неудобоваримое — http://мкра.рф/); и домены формата http://mcx-ra.ru/ (в Адыгее вообще любят загадочные домены, не правда ли?) или вот http://szn24.ru/. Догадаться с первого раза — что и о чём это, мягко скажем, сложно. Впрочем — об этом чуть ниже.


Читать дальше →
Всего голосов 65: ↑60 и ↓5+55
Комментарии245

Создание и тестирование Firewall в Linux, Часть 1.1 Виртуальная лаборатория

Время на прочтение5 мин
Количество просмотров35K
Решил написать статью по следам курса, который я делал в прошлом семестре в институте. Конечно, тут я опишу лишь самые главные основы и максимально все упрощу. Постараюсь дать немного теоритической информации, но в основном больше ссылок, картинок и практики.

Итак, речь пойдет о написании firewall в среде Linux. Всю статью я поделю на несколько частей. То, что вы читаете сейчас – первая часть, она поделена еще на три части. Некоторые темы хорошо известны и задокументированы, поэтому я постараюсь отдельно давать минимум теории по ним и отдельно практику. Чтобы всем было интересно. А также ссылки для углубления (часто это будут английские статьи).

Содержание первой части:

1.1 — Создание виртуальной лаборатории (чтобы нам был где работать, я покажу как создать виртуальную сеть на вашем компьютере. Сеть будет состоять из 3х машин Linux ubuntu).
1.2 – Написание простого модуля в Linux. Введение в Netfilter и перехват траффика с его помощью. Объединяем все вместе, тестируем.
1.3Написание простого char device. Добавление виртуальной файловой системы — sysfs. Написание user interface. Объединяем все вместе, тестируем.

Содержание второй части:


Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии7

Информация

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