Pull to refresh
56
0
Илья @WST

Инженер-программист

Send message

Astra Linux «Орел» Common Edition: есть ли жизнь после Windows

Reading time7 min
Views268K
Мы получили развернутый обзор от одного из пользователей нашей ОС, которым хотели бы с вами поделиться.

Astra Linux — дериватив Debian, который был создан в рамках российской инициативы перехода на СПО. Существует несколько версий Astra Linux, одна из которых предназначена для общего, повседневного использования — Astra Linux «Орел» Common Edition. Российская операционка для всех — это по определению интересно, и я хочу рассказать об «Орле» с позиции человека, который ежедневно пользуется тремя операционными системами (Windows 10, Mac OS High Sierra и Fedora) и при этом последние 13 лет был верен Ubuntu. Опираясь на этот опыт, я рассмотрю систему с точки зрения установки, интерфейсов, ПО, базовых возможностей для разработчиков и удобства с разных ракурсов. Как покажет себя Astra Linux в сравнении с более распространенными системами? И сможет ли она заменить Windows дома?


Читать дальше →

Unix-пароль Кена Томпсона

Reading time2 min
Views49K
Где-то в 2014 году в дампах исходного дерева BSD 3 я нашла файл /etc/passwd с паролями всех ветеранов, таких как Деннис Ричи, Кен Томпсон, Брайан В. Керниган, Стив Борн и Билл Джой.

Для этих хэшей использовался алгоритм crypt(3) на основе DES — известный своей слабостью (и с длиной пароля максимум 8 символов). Поэтому я подумала, что будет легко взломать эти пароли ради удовольствия.

Берём стандартные брутеры john и hashcat.
Читать дальше →

Уравнение Навье-Стокса и симуляция жидкостей на CUDA

Reading time24 min
Views61K
Привет, Хабр. В этой статье мы разберемся с уравнением Навье-Стокса для несжимаемой жидкости, численно его решим и сделаем красивую симуляцию, работающую за счет параллельного вычисления на CUDA. Основная цель — показать, как можно применить математику, лежащую в основе уравнения, на практике при решении задачи моделирования жидкостей и газов.


Читать дальше →

Удаленное управление компьютером через браузер

Reading time1 min
Views59K
Около полугода назад задумал сделать программу для управления компьютером через браузер. Начал с простого односокетного HTTP сервера, который передавал картинки в браузер и получал координаты курсора для управления.

На определенной стадии понял что для этих целей хорошо подходит технология WebRTC. Такое решение есть у Chrome браузера, оно устанавливается через расширение. Но хотелось сделать маловесную программу, которая будет работать без установки.

Сначала попробовал использовать библиотеку которую предоставляет Google, но после компиляции она занимает 500MB. Пришлось реализовать весь WebRTC стек почти с нуля, удалось все уместить в exe файл размером 2.5MB. Друг помог с интерфейсом на JS, вот что в итоге получилось.
Читать дальше →

Рендеринг текста вас ненавидит

Reading time14 min
Views30K

Рендеринг текста: насколько сложным он может быть? Оказывается, невероятно сложным! Насколько мне известно, буквально ни одна система не выводит текст «идеально». Где-то лучше, где-то хуже.

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

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

Мы обсудим темы, которые не объединяются в рамках какой-то единой концепции, это просто вопросы, с которыми мне пришлось столкнуться за несколько лет работы над рендерингом текста в Firefox. Например, не будем слишком подробно обсуждать проблемы сегментации текста или управления различными текстовыми библиотеками для конкретной платформы, поскольку этим я не слишком интересуюсь.
Читать дальше →

Загрузка музыки ВКонтакте

Reading time6 min
Views27K

Доброго времени суток всем.


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


Для работы нужно скачать модули vk_api и request!


Для начала подключим необходимые модули и объявим некоторые переменные:


import os
import pickle
import vk_api
import requests

from vk_api import audio

from time import time

vk_file = "vk_config.v2.json"
REQUEST_STATUS_CODE = 200 
path = 'vk_music/'
Читать дальше →

Не стесняемся, минусуем

Reading time1 min
Views71K
Среди 437 моих постов на Хабре нет ни одного с отрицательным рейтингом (ну или я невнимательно смотрел), поэтому можете поставить точку этому безобразию и слить этот пост, прям хоть рекорд можем поставить. Если бы мог, сам бы минусанул.

Читать дальше →

В Германию разработчиком без в/о

Reading time4 min
Views52K
image

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

В своё оправдание скажу, что случай необычный. Ваш покорный слуга в силу природной лени и прочих хорошо знакомых каждому причин зафейлил квест по получению полезной бумажки под названием диплом. Последствия моего юношеского легкомыслия ждут вас под катом.
Читать дальше →

Как делать сайты в 2019 году

Reading time3 min
Views130K

Веб стремительно меняется, не отставай и ты!



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


Давайте-ка шаг за шагом разберём важнейшие принципы веб-дизайна в 2019 году.


Обязательно дайте пользователю знать, что у сайта есть мобильное приложение


Это важнейший принцип, и на то есть свои причины. Фокус-группы, на которые мы уже потратили кучу денег, показали что первое же, чего захочет пользователь попав на ваш сайт — установить мобильное приложение.


Ну а кратчайший путь к этому — показать здоровенное модальное окно:



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


Совет: Если у вас нет мобильного приложения, не беда! Просто запихните весь сайт в  webview с отключенной безопасностью и пишите, что это мобильное приложение!

Читать дальше →

Анализ сишного Hello World

Reading time7 min
Views71K
Hello World — одна из первых программ, которые мы пишем на любом языке программирования.

Для C hello world выглядит просто и коротко:

#include <stdio.h>

void main() {
  printf("Hello World!\n");
}

Поскольку программа такая короткая, должно быть элементарно объяснить, что происходит «под капотом».
Читать дальше →

Сети кабельного телевидения для самых маленьких. Часть 9: Головная станция

Reading time2 min
Views9.1K


Головная станция собирает сигналы с нескольких источников, обрабатывает их и вещает в кабельную сеть.
Читать дальше →

Как опубликовать консольную утилиту на PyPI за 1 минуту

Reading time2 min
Views8.8K


Разработав консольную утилиту, вы решаетесь опубликовать её на PyPI. Ну правда, что может быть лучше, чем сделать её доступной через pip install? Погуглив, что для этого надо, вы, возможно, наткнётесь на единственный найденный мной пост по теме, который мало того что от 2014 года, так ещё и требует от вас создать кучу папок и файлов для совершенно ненужных (вам) вещей.


Как же решить эту задачу без лишней головной боли в 2019 году? Я уже задавался этим вопросом и поэтому, прочитав тонну документации, создал для вас этот туториал. Вот пошаговая инструкция.

Читать дальше →

Arduino и Raspberry вне закона

Reading time2 min
Views92K
Эта публикация призвана обратить внимание сообщества радиолюбителей и небольших производителей РЭА на грядущее изменение законодательства. Возможно, в ближайшем будущем за изготовление и продажу умной кормушки для котика на Arduino без декларации о соответствии вы будете преследоваться по закону, а затем наказаны по всей его строгости.
Читать дальше →

10 английских идиом, о значении которых вы никогда не догадаетесь

Reading time4 min
Views51K
Кот в пижаме, деревянный никель и дядя Боб — о чем вообще говорят эти англичане? Эксперты онлайн-школы английского языка Skyeng собрали для вас самые странные идиомы и даже докопались до их корней.

Go out on a limb — Рискнуть

Как ввернуть в разговор: Это подходящий оборот, чтобы подчеркнуть свою (или чью-то еще) самоотверженность. Если вы хотите сказать, что оказывая услугу, вы рискуете и вообще изрядно напрягаетесь, смело говорите I go out on a limb. Идиома подходит и для случаев, когда вы отважно высказываете непопулярное мнение или смелое предположение, которое никак не можете доказать.
Пример: I’m going to go out on a limb here and say that Sarah is pregnant. — Рискну предположить, что Сара беременна.
Откуда взялось: Помните, как в детстве взбирались на дерево и ползли по ветке, пока она не начинала опасно сгибаться? Go out on a limb — это как раз и означает “карабкаться по ветке”, то есть оказаться в крайне шатком и ненадежном положении, причем по доброй воле.


Читать дальше →

Легкодоступная левитация в ультразвуке

Reading time3 min
Views28K


Привет, Хабр. В этой статье я расскажу о простом устройстве для демонстрации акустической левитации из доступных компонентов. В статье много фотографий и ссылка на видео с экспериментами.
Читать дальше →

Методы в примитивных типах PHP

Reading time10 min
Views21K
Некоторое время назад назад Энтони Феррара выразил мысли по поводу будущего PHP. Соглашусь с большинством его взглядов, но не со всеми. В статье я остановлюсь на одном конкретном аспекте: преобразования примитивных типов данных, таких как строки или массивы, в “псевдо-объекты”, позволяя выполнять в них вызовы методов.

Начнем с нескольких примеров:

$str = "test foo bar";
$str->length();      // == strlen($str)        == 12
$str->indexOf("foo") // == strpos($str, "foo") == 5
$str->split(" ")     // == explode(" ", $str)  == ["test", "foo", "bar"]
$str->slice(4, 3)    // == substr($str, 4, 3)  == "foo"

$array = ["test", "foo", "bar"];
$array->length()       // == count($array)             == 3
$array->join(" ")      // == implode(" ", $array)      == "test foo bar"
$array->slice(1, 2)    // == array_slice($array, 1, 2) == ["foo", "bar"]
$array->flip()         // == array_flip($array)        == ["test" => 0, "foo" => 1, "bar" => 2]

Здесь $str — это обычная строка и $array является простым массивом — они не объекты. Мы просто даем им немного объектного поведения, позволяя вызывать в них методы.

Обратите внимание, такое поведение совсем не за горами. Это уже не сон, кое-что уже существует прямо сейчас. PHP расширение scalar objects позволяет определить методы для примитивных типов.

Читать дальше →

Как это работать со Студией Лебедева: опыт Туту.ру

Reading time8 min
Views81K
Меня зовут Никита Иванов, я дизайн-директор Туту.ру. Наш бизнес работает с 2003 года, и в прошлый раз мы переосмыслили его айдентику почти 12 лет назад — в конце 2006.

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

В этой статье я расскажу, как мы искали новую айдентику и выбирали партнёра, почему остановились на Студии Артемия Лебедева и как устроена работа с их командой, а также как мы сейчас меняем дизайн сервисов с 15-летней историей.


Читать дальше →

Троянский пингвин: Делаем вирус для Linux

Reading time6 min
Views23K
Нет, я не собираюсь рассказывать, как написать своего шифровальщика-вымогателя, майнера или эксплуатировать супер-новую уязвимость, как вы могли подумать. И тем более я не горю желанием поднимать холивар «Linux безопаснее Windows?(да)». Моей целью было написание простого вируса для linux, некого, так сказать, «Just for Fun», единственной функцией которого является распространение своей копии. О том, что у меня получилось, я расскажу в этой статье. В конце я приведу ссылку на GitHub с исходниками.

image
Читать дальше →

Программирование с PyUSB 1.0

Reading time15 min
Views56K
От переводчика:
Это перевод руководства Programming with PyUSB 1.0
Данное руководство написано силами разработчиков PyUSB, однако быстро пробежавшись по коммитам я полагаю, что основной автор руководства — walac.


Позвольте мне представиться


PyUSB 1.0 — это библиотека Python обеспечивающая легкий доступ к USB. PyUSB предоставляет различные функции:

  • На 100% написана на Python:
    В отличии от версий 0.x, которые были написаны на C, версия 1.0 написанна на Python. Это позволяет программистам на Python без опыта работы на C лучше понять как работает PyUSB.
  • Нейтральность платформы:
    Версия 1.0 включает в себя фронтенд-бэкенд схему. Она изолирует API от специфичных с точки зрения системы деталей реализации. Соединяет эти два слоя интерфейс IBackend. PyUSB идет вместе со встроенными бэкендами для libusb 0.1, libusb 1.0 и OpenUSB. Вы можете сами написать свой бэкенд, если хотите.
  • Портативность:
    PyUSB должен запускаться на любой платформе с Python >= 2.4, ctypes и, по крайней мере, одним из поддерживаемых встроенных бэкендов.
  • Простота:
    Взаимодействие с устройством USB никогда не было таким простым! USB — сложный протокол, а у PyUSB есть хорошие предустановки для наиболее распространенных конфигураций.
  • Поддержка изохронных передач:
    PyUSB поддерживает изохронные передачи, если лежащий в основе бэкенд поддерживает их.

Несмотря на то, что PyUSB делает программирование USB менее болезненным, в этом туториале предполагается, что у Вас есть минимальные знания USB протокола. Если Вы ничего не знаете о USB, я рекомендую Вам прекрасную книгу Яна Аксельсона «Совершенный USB» (Jan Axelson «USB Complete»).
Читать дальше →

Запуск просмотрщика картинок из Windows XP на современных Windows

Reading time2 min
Views38K
Есть у меня папка со старыми картинками, которые я собирал в нулевых. Переношу с компьютера на компьютер вместе со всеми моими файлами при каждом апгрейде, изредка захожу поностальгировать. Но каждый раз меня немного смущало то, что стандартный просмотрщик Windows 7 не показывал GIF-анимацию, хотя память мне подсказывала, что во времена XP анимация показывалась без проблем. При очередном приступе ностальгии я всё же решил запустить просмотрщик из XP на Windows 7. После преодоления ряда препятствий, я теперь уверен — GIF-анимация там действительно поддерживалась! А главное — теперь я могу смотреть свою старую папку с картинками в аутентичном интерфейсе просмотрщика картинок Windows XP, что создаёт более подходящую атмосферу =)


Скачать: shimgvw_xp32.7z (включает бинарник и исходный код лаунчера, плюс shimgvw.dll из англоязычной Windows XP SP3).

Читать дальше →

Information

Rating
Does not participate
Location
Красногвардейское, Адыгея, Россия
Date of birth
Registered
Activity