С тегами:

программирование

Любые посты за всё время, сначала свежие, с любым рейтингом
Найти посты
сбросить
загрузка...
209
Основы программирования: Лекция #10. Безопасность в Интернете. Обработка естественных языков, II [CS50-2015, Гарвард]
5 Комментариев в Наука | Science  

Доброго дня, Пикабу! Представляем 21-ую лекцию легендарного Гарвардского курса CS50, который мы переводим и озвучиваем специально для JavaRush.

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

Всего в курсе 24-лекции, и если вы ещё не посмотрели предыдущие 20 – самое время начать знакомиться с ними. Список предыдущих лекций вот тут.


На кого рассчитан курс CS50?


Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.


CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.


Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.


Что изучают на CS50?


— Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости;


— Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам»;


— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;


— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C;


— Основы баз данных и SQL;


— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы;


— Основы подготовки презентации проектов по программированию.



Поддержите нас плюсом и подписывайтесь на нас и сообщество «Наука».

Показать полностью
449
1400 бесплатных книг для программмистов на Github
30 Комментариев  

Более 1400 бесплатных книг разных направлений для программистов.

https://github.com/vhf/free-programming-books/blob/master/fr...


Есть и на русском языке - https://github.com/vhf/free-programming-books/blob/master/fr..., но их меньше.

104
Программисты поймут
17 Комментариев  
Программисты поймут
39
Энтузиаст создал Linux-систему размером с iPhone 5 на базе Raspberry Pi
75 Комментариев в Arduino & Pi  
Энтузиаст создал Linux-систему размером с iPhone 5 на базе Raspberry Pi tproger, raspberry pi, Raspberry, технологии, программирование, микроконтроллеры, устройства, видео, длиннопост

Что будет, если скрестить смартфон и одноплатный компьютер Raspberry Pi Zero W за 10 долларов? Например, Zero Terminal.


Что это такое?


Zero Terminal — это проект, созданный человеком, известным под ником N-O-D-E. Он превратил Pi Zero W в компьютер размером с телефон с выдвижной QWERTY-клавиатурой и сенсорным дисплеем. Устройство работает не на мобильной ОС, а на полноценном десктопном дистрибутиве Linux, Raspbian.


Являясь полноценным компьютером, Terminal обходит фундаментальное ограничение Pi, которое заключается в необходимости использования монитора и клавиатуры для полноценного функционирования.


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

Показать полностью
65
Программирование Python по моим конспектам Лекция 8.3
19 Комментариев  

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


Ну что братья и сестры, вот и пришел час постить очередную непонятную херню о питоне.

Сегодня низпослали нам небеса продолжение лекции о типах данных, а именно о числах с запятой float.  Возрадуемся же! Кто не радется- тому гореть в аду непросвещенных.

Итак, все мы знаем что такое дроби, кто не знает- гуглим. Кто не умеет гуглить- идем работать в другую область народного хозяйства. Нам извесно, что любую дробь можно преобразить в число с запятой. Т.е 1/2 это 0,5 и так далее. Не будем на этом останавливаться. Иногда в программировании да и в реальной жизни нам необходима предельная точность, именно в этих случаях мы используем числа с запятой. К примеру, Пикабушники используют эти числа для измерения константы в 49,5 см.

Как и в прошлой лекции- покажу вам веселую картинку

Программирование Python по моим конспектам Лекция 8.3 питон, программирование, язык, длиннопост

Данные записи древних были обнаружены в священных храмах, и мудрецы толмачат сие вот как-

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

Программирование Python по моим конспектам Лекция 8.3 питон, программирование, язык, длиннопост
Показать полностью 13
615
Бейсик и ветеран
41 Комментарий  

В годы отрочества, еще при Союзе, посещал я кружок при станции юных техников.

Не помню как кружок назывался, но там было штук 15 ПЭВМ "Корвет" и мы на каждом занятии пару часов посвящали набиванию программ на Бейсике, а потом шпилили во всякие игрули - танки там какие-то, беготня по крыше поезда.

Руководителем кружка был какой-то реальный дед-ветеран.

Каким боком и когда он пересекся с Бейсиком я не знаю и не понимаю. Видно на курсы переподготовки направляли, как заслуженного и уважаемого человека.

Хочу заметить, что он с этим заданием справился, за что ему доп. уважуха и респект.

Он учил нас составлять программы на Бейсике. И справился с этим на 5!

Единственным минусом у него было полное незнание английского языка.

В связи с этим, у меня на всю жизнь остались в памяти команды Бейсика в транскрипции русско-партизанского произношения ветерана:

ЛОЦАТЕ (LOCATE),

ПРЫНТ УСИНГ,

ЦЫРЦЛЕ (CIRCLE).

До сих пор помним и ржем по доброму.

А Бейсику он нас научил, таки.

Я после этого свою компанию создал. Майкрософт.

Вру. На государство работаю.

Но на Бейсике писать проги мог.

98
Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01
23 Комментария в Arduino & Pi  

Подключение ESP-01 к компьютеру

Подключение ESP-01 к компьютеру происходит несколько сложнее, нежели чем знакомые всем arduino. Повторюсь, если бы у меня не было чипа ESP-01 в хозяйстве, то надо выбирать уже готовые наборы с необходимой “обвязкой” на борту. Для того чтобы подключить ESP-01 к компьютеру нам потребуется USB-TTL адаптер, макетная плата и набор проводов папа-мама для макетной платы. Также, немаловажную роль играет источник питания. В самом начале своих экспериментов я не придал этому значения, и есп-ха постоянно перезагружалась, переставала отвечать на команды. В общем, обязательно используйте отдельный источник питания.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

На фото изображен USB-TTL адаптер на чипе CH340. Обратите внимание на перемычку, с помощью неё выбирается рабочее напряжение. Нам нужно 3.3V

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Макетная плата с DC-DC преобразователем. К косе проводов уходящих направо подключалась ESP.

Настоятельно рекомендую для подключения ESP-01 к макетной плате использовать специальный адаптер, ищется на али по запросу Breadboard Adapter for ESP-01. Он показан на следующем фото. Он позволит вам стабильно воткнуть ESP в макетную плату, чтобы ничего не болталось на проводах. Плюс, что еще немаловажно на этом адаптере распаян конденсатор на 0.1µF для сглаживания питания. В дальнейшем его можно использовать и в готовом девайсе, чтобы иметь возможность быстро вытащить-заменить чип.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Breadboard Adapter for ESP-01 очень сильно облегчит подключение чипа к макетной плате. У меня такого в момент сборки девайса не было.

Вот моя схема подключения. Честно стырена с просторов инета, единственное я добавил емкость на 10µF в разрыв кнопки RST. А то, там толи дребезг кнопки был, толи хз.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

«Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты к питанию (VCC) через резистор от 4,7 до 50 кОм. «Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Об этом немного позже. Далее подключаем:

ESP8266 — RX ---> USB-TTL — TX,

ESP8266 — TX, ---> USB-TTL — RX.

Уже на этом этапе можно подать питание на схему, и убедиться что ничего не сгорело. При успешном старте заводской прошивки на модуле ESP8266 загорится красный светодиод (индикатор питания, на некоторых версиях модуля, например ESP-12, может отсутствовать) и пару раз мигнет синий (это индикатор передачи данных от модуля к терминалу по линии TX-RX, может иметь другой цвет).

Проверка подключения и прошивка

Для работы с esp мы будем использовать широко распространенную в узких кругах ESPlorer https://esp8266.ru/esplorer/#download Программа написана на java и будет без проблем работать под разными платформами (win, linux mac)


Подадим питание на модуль, запустим программу, выбираем нужный COM порт, и нажимаем open, и перезагрузим модуль. После этого в окне терминала мы увидим мусор из символов (из-за разных скоростей передачи) , а потом что-то типа:

wdt reset

load 0x40100000, len 25052, room 16

tail 12

chksum 0x0b

Это означает что модуль успешно стартует на стоковой прошивке и у вас есть с ним связь.


Отложим пока ESPlorer в сторону, он понадобится нам позже. Самое время прошить в наш модуль прошивку NodeMCU. Я выбрал эту прошивку по нескольким причинам: для обновления работы скриптов больше не нужно переводить модуль в режим прошивки, и нажимать кнопки на макетке (у меня все это дело немного глючило на макете) , возможность использовать готовые модули, наличие хорошей документации к API. Ссылка на документацию: https://nodemcu.readthedocs.io/en/master/


Благодаря сервису https://nodemcu-build.com/ мы можем собрать собственную версию прошивки только с теми модулями, которые нам нужны. Чем меньше модулей будет в прошивке, тем больше места останется для ваших данных и скриптов.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Заполняем email, ставим галочки на те модули что нам понадобятся, а именно: bit, CJSON, file, GPIO, HTTP, I²C, net, node, 1-Wire, timer, UART, WiFi и нажимаем Start Your Build.

Пока выполняется билд скачаем программу для прошивки. Если у вас не windows, то есть другие инструменты, например esptool, я использовал nodemcu-flasher https://github.com/nodemcu/nodemcu-flasher Скачиваем билд в зависимости от вашей операционной системы.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Проверяем почту, нам придет письмо с ссылками для скачивания нашей прошивки.

Примерно так будет выглядеть письмо. Скачиваем файл прошивки, нам нужна integer версия.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Теперь запускаем ESP8266Flasher.exe, переходим на вкладку Config, в первую строчку добавляем наш файл.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Переходим на вкладку Operation, перезагружаем нашу ESP-01 в режим прошивки таким образом: зажимаем кнопку FLASH и нажимаем RESET, отпускаем FLASH. Нажимаем Flash.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Если все прошилось успешно, ура-ура! Осталось совсем немного.

Теперь открываем ESPlorer, в правой части выбираем нужный порт, нажимаем Open и перезагружаем модуль нажав на кнопку RESET. Вы должны увидеть в терминале что-то похожее.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Пишем логику работы датчика

Логика работы датчика очень проста: после загрузки подключаемся к wi-fi точке, получаем ip-адрес. Один раз в минуту считываем показания и отправляем их в облако. Помимо этого создаем на 80 порту веб-сервер, обратившись к которому можно получить JSON с текущим значением температуры.

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

Несколько слов отдельно стоит сказать про файл init.lua Именно он начинает исполнятся после загрузки модуля, и уже из него вызываются все остальные файлы на исполнение.

Точка-доступа и пароль задаются в этой строчке:

wifi.sta.config("YOUR_SSID_NAME", "YOUR_PASSWORD")

Вместо YOUR_SSID_NAME и YOUR_PASSWORD необходимо указать имя точки-доступа и пароль от неё. В моем случае настройки приходят с роутера по DHCP, поэтому ip-адрес здесь не указывается. В настройках роутера я закрепил за есп постоянный адрес.

Для сохранения данных мы будем использовать сервис https://thingspeak.com/

Там необходимо зарегистрироваться и создать канал. В один канал можно записывать сразу несколько показателей, например если помимо температуры мы бы измеряли влажность или что-то еще. Переходим на страницу API Keys и копируем оттуда Write API Key. Этот ключ необходимо вставить в файл application.lua на строчке 36 вместе YOUR_API_KEY

http.get("http://api.thingspeak.com/update?api_key=YOUR_API_KEY&field1..."..t, nil, function(code, data)

Также не забываем загрузить файл ds18b20.lua, в нем содержится логика для работы с датчикам DS18B20. Т.к. прошивку мы взяли integer, а температура является float числом, я этот файлик вероломно поправил для того, чтобы в результате работы возвращалась строка, но с разделителем точкой, как будто у нас есть поддержка работы с дробными числами.

Можно протестировать устройство, подключив датчик через макетную плату.

Вот принципиальная схема устройства, накидал быстренько.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост
Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

После включения устройства у вас в канале на thingspeak должны появиться данные, а также вы должны смочь зайти на ip-адрес, который назначился вашей esp в браузере и увидеть примерно следующее:

{

"sensor-name": "balcony",

"temperature": 20.7500,

"chipID": 170827,

"espMac": "5c:cf:7f:02:9b:4b",

"espIp": "192.168.20.38",

"heap": 32040,

"timerTicks": 835632668

}

Формат выдачи данных вы можете поменять самостоятельно поправив файл application.lua

Финальная сборка устройства

Я запаял все на макетной плате под пайку, такой зеленой, с отверстиями. Стабилизатор питания отдельный, на AMS1117. Питается сейчас от старого БП роутера длинк на 5V, за несколько месяцев ESP ни разу не зависла. Жду пока приедут антенна и приемник катушки (ну когда же уже!!!!!), для того, чтобы питать датчик за окном без проводов. Ковырять и сверлить стеклопакеты на утепленном балконе не хочу.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост
Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

Заключение

Вот мы и закончили с вами наш температурный датчик. Все исходники файлов можно скачать на github. https://github.com/nossSpb/nodemcu-ds18b20-tutorial/tree/mas... Осталось все это дело упаковать в герметичный корпус и повесить за окно. Помимо текущих показаний, мы также имеем историю измерений в облаке на thingspeak, и тоже можем с ней работать. Об этом я расскажу в следующей части. Делитесь своими идеями в комментариях, задавайте вопросы. Спасибо что дочитали до конца.

Показать полностью 14
272
Гарвардский курс CS50 на русском: двадцатая лекция
10 Комментариев в Наука | Science  

Шалом! А мы продолжаем публиковать лекции легендарного Гарвардского курса CS50, которые мы переводим и озвучиваем специально для JavaRush.

И рады вам представить уже 20-ю серию!

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

Напомним, что всего в курсе 24 лекции.


Вот список уже переведённых на сегодняшний день лекций:


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

2-я лекция: также является вступительной и знакомит с общими понятиями языков программирования, продолжая тему первой лекции.

3-я лекция: знакомит с понятием и функциями компилирования и рассказывает, каким образом в программах появляются баги (начиная с самого первого «компьютерного жучка»), как их распознать и чем они могут быть вызваны.

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

5-я лекция: продолжение о багах, плюс раскрывает понятие структуры программы, объясняет, зачем нужны функции внутри кода, в чём важность области действия значений, и вводит функцию strlen. Также из неё вы узнаете, как в CS50 борются с любителями списывать, и научитесь экономить оперативную память компьютера во избежание ошибки сегментации.

6-я лекция: об основах криптографии, массивах и аргументах командной строки.

7-я лекция: знакомит с основными методами сортировки данных. Дэвид Мэйлен рассказывает о пузырьковой сортировке, сортировках выбором, вставкой и слиянием, а зрители проверяют их на практике.

8-я лекция: про сортировку данных методом слияния, а также краткий экскурс в мир побитовых операций.

9-я лекция: продолжение знакомства с оператором условия — if, введение понятие рекурсии, а также обсуждение скандала концерна Volkswagen и проблемы компьютерной безопасности. Лектор детально рассматривает функцию перестановки - swap, демонстрирует приёмы работы с отладчиком программ и раскрывает структуру и механику оперативной памяти.

10-я лекция: о разных методах составления списков, сохранении информации о программе и использовании указателей и указуемых.

11-я лекция: изучение указателей, разбор структуры функций библиотеки CS50, знакомство с утечкой памяти, введение понятия linked list и других структур данных с детальной демонстрацией.

12-я лекция: про особенности стека, очереди и связного списка. Разбор возможных проблем, связанных с доступом к памяти. Тут же рассматривается структура двоичного дерева, префиксного дерева и работа со сжатием файлов.

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

14-я лекция: введение в веб-программирование и знакомство с языками HTML и CSS. Впервые в истории студенты двух учебных заведений — Гарварда и Йеля — при помощи современных технологий параллельно проходят обучение на курсе.

15-я лекция: знакомство с языком программирования PHP и языком разметки HTML.

16-я лекция: продолжение рассмотрения языка PHP, теперь для разработки веб-приложений, а также знакомство с базами данных и MySQL.

17-я лекция: продолжение знакомства с базами данных SQL.

18-я лекция: введение в JavaScrip tи программирование на стороне клиента.

19-я лекция: продолжается знакомство с языком JavaScrip , а также демонстрируется использование компьютерных технологий в сфере археологии.


Подробнее о CS50

На кого рассчитан курс?


Если вы — новичок, пройдите CS50. Если кто-то из ваших знакомых приглядывается к ИТ и программированию, советуйте CS50 не глядя. Я серьезно.

CS50 подойдет любому человеку, кто решил стать «айтишником». Пожалуй, его можно рекомендовать и способным 12-летним, и умудренным опытом «перебежчикам» из других профессий. Идеально — старшеклассникам и студентам.

Курс очень прогрессивный и обновляется из года в год. При этом в отличие от большинства подобных университетских обучающих программ (например, MIT 6.00X) от слушателя не требуются знания университетской математики, достаточно школьного уровня.



Что изучают на CS50?


— Основы компьютерных наук и программирования. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости;

— Концепции алгоритмов и алгоритмичности мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам»;

— Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;

— Основы языка программирования C и визуального языка Scratch. Собственно, все основные примеры и задания студенты делают на языке C;

— Основы баз данных и SQL;

— Веб-разработка: основы CSS, HTML, JavaScript и PHP. Естественно, только самые азы;

— Основы подготовки презентации проектов по программированию.



Поддержите нас плюсом и подписывайтесь на нас и сообщество «Наука».

Показать полностью
113
Wi-fi термометр на ESP8266. Часть 0. Подготовительная.
50 Комментариев в Arduino & Pi  

Привет, пикабу!

Все началось с того, что у меня уже довольно давно лежал чип ESP-01, один из самых первых, что появился на али. Очень долго до него не доходили руки, но наконец дошли. В предстоящей серии публикаций расскажу подробно о каждом этапе. Этой серией постов надеюсь разжечь интерес аудитории к микроконтроллерам и программированию, а также побудить повторить мой опыт. Видео не будет, будет много текста и картинок.

Wi-fi термометр на ESP8266. Часть 0. Подготовительная. сделай сам, esp8266, arduino, электроника, программирование, NodeMcu, своими руками, длиннопост

На картинке изображен модуль из второй части, который показывает текущие дату\время, показания датчика (датчик пока находится внутри квартиры)

Показать полностью 2
369
Как сломать интернет с помощью 11 строчек кода.
103 Комментария в IT-юмор  

Конечно, не весь интернет, а всего лишь кучу проектов на Node.js, но и так неплохо получилось.


Это произошло год назад. JS-разработчик Азер Кочулу (Azer Koçulu) отозвал из NPM (популярный менеджер пакетов, используемый при разработке проектов на Node.js) более 250 своих модулей. Причиной этого стали разногласия по поводу названия одного из модулей, совпавшего с названием мессенджера Kik.


Представители разработчиков Kik сначала обратились к Кочулу с требованием переименовать модуль, тот отказался, после чего они пошли напрямую к администраторам NPM. Те не стали спорить и тихо сменили владельца модуля.


Это привело Кочулу в ярость, он снес из NPM все свои разработки и перенес их на GitHub. По несчастливому стечению обстоятельств среди них оказалась 11-строчная функция leftpad, занимающаяся дополнением строки пробелами до нужной длины. И функция эта использовалась каким-то безумным количеством JS-проектов (за последний месяц модуль leftpad скачивался почти два с половиной миллиона раз), которые сразу после этого сломались.


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


Это примерно все, что нужно знать о разработке на JavaScript в 2016 году.


Источник

259
Впихивает любые данные в видео (или творчество программиста)
82 Комментария  
Впихивает любые данные в видео (или творчество программиста) программирование, csharp, хобби, Файл, youtube, Кодирование, я сделяль, гифка, видео, длиннопост

Художники создают картинки, музыканты - музыку, но и программистам не чужд зуд творчества.

Сразу скажу - я к программистам отношу себя в той же мере, как и "тихий" рыбак медитирующий на поплавок относится к рыболовецкому траулеру.


В один прекрасный день ко мне пришла мысль - а как бы так сделать чтобы хранить данные в видео файлах? И речь идет не о скрытом хранении (стеганографии) которое не позволит впихнуть большой объем информацию, а о вполне очевидном для постороннего глаза использовании кадров видео для этих целей.

Конечно, аналогичная мысль приходила не мне одному - в интернете нашлось несколько решений, но по тем или иным причинам мне они не понравились - не в последнюю очередь из-за появления ошибок в данных после того как такое видео было перекодировано, а ведь видео обязательно будет перекодироваться в сервисах подобных Youtube.

Поэтому я решил сделать сам.

Впихивает любые данные в видео (или творчество программиста) программирование, csharp, хобби, Файл, youtube, Кодирование, я сделяль, гифка, видео, длиннопост

Основная идея - нужно информацию из файла преобразовать в цветные точки на кадрах видео. Исходные файл скармливается некоторому "черному ящику", который выдает серию картинок, картинки с помощью видео-конвертера склеиваются в видео файл MP4 без звука, этот файл можно залить на Youtube, скачать, провести через озвученную цепочку действий в обратном направлении и получить файл идентичный исходному.

Показать полностью 6 1
56
Как 100 000 детей стали учиться лучше
26 Комментариев  

Краткий пост о том, как я сделал приложение, которое сделало 100 000 детей чуть счастливее!

В Москве существует система МРКО - единый электронный дневник, который связывает все московские школы. И я постоянно мучился с ним, ведь он совсем неудобный! (Да, я школьник)


Однажды я спросил себя:

Леван, а почему ты не можешь создать удобный дневник для себя и остальных?

Не найдя ответа на вопрос, я принялся за работу. В итоге получилось приложение с функционалом, которому нет альтернатив.


Собственно весь пост будет об этом. Ссылок оставлять не буду, дабы не удалили за рекламу.


Итак.

Какие основные проблемы у официального дневника?

Во-первых он совсем неудобный.

Во-вторых в него долго и сложно заходить, поэтому многие дети в него не заходят.

Ну и в-третьих - это просто дневник, а ведь потенциал колоссальный!


Давайте сравним официальный дневник и мой:

Как 100 000 детей стали учиться лучше Образование, Москва, программирование, длиннопост

Слева официальный дневник, а справа мой.


Очевидно, что поставить ДЗ отдельно от расписания - большая ошибка. У меня же этой проблемы нет.


Вы спросите меня: "Леван, ты решил написать этот пост т.к. создал просто удобный дневник?"


А вот и нет! Во-первых я хочу показать, что каждый может сделать что-то хорошее для своего города, а во-вторых у меня есть много чего интересного для вас!



Основной идеей моего дневника стала система контроля оценок.



Я вывел 4 основные проблемы

1. Дети не учатся т.к. не знают текущую ситуацию с оценками или думают, что все хорошо

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

3. Чем больше учишься плохо, тем сложнее учиться хорошо

4. Даже самый большой бездельник в тайне мечтает быть отличником


Собственно получается такой круговорот, который очень легко сломать. Решение находится в упрощении пользования дневником.



Так появился функционал советов.


Приложение показывает сколько осталось оценок до твоей цели. И дети начинают учиться. Вы видите, что до отличника не хватает всего 2-3 пятерки и учитесь лучше. Происходит нечто космическое. Появляется огромная мотивация.


Статистика моего приложения показывает, что наши пользователи учатся лучше.

Как 100 000 детей стали учиться лучше Образование, Москва, программирование, длиннопост

Видите эти красные, желтые, зеленые полоски?

Это тоже советы и каждая имеет смысл.


Например, если ваша цель 4, а по физике у вас средний балл 3.2, то это красный цвет.

Когда откроете ДЗ, то по цвету будет понятно, что на этот предмет надо сделать упор.


Если по физике средний балл 3.9, то это зеленый цвет.

Учитель поставит вам 4, а вы можете направить свои силы на другой предмет.


Если по физике средний балл 3.7, то это желтый цвет, а значит спорная ситуация и надо подойти к учителю и сказать, как сильно его любишь.


Удобно? Безусловно. Работает? Да! Я сам стал отличником, хотя был хорошистом.

Как 100 000 детей стали учиться лучше Образование, Москва, программирование, длиннопост

Также был создан прекрасный функционал для контроля оценок.

Учитель ставит оценку и вам приходит уведомление на смартфон, планшет и даже в ВК.

"Проспать" оценку больше не получится, а значит еще одной проблемой меньше.


Какое еще ВК?

Как 100 000 детей стали учиться лучше Образование, Москва, программирование, длиннопост

Да, существует бот в ВК.

Только вдумайтесь.

Можно просто написать сообщение в ВК и моментально получить свои оценки или ДЗ в ответном сообщении!

Нравится? И детям нравится. И они наконец-то начали активно пользоваться дневником.


Также есть такие фичи, которых нет на официальном cайте или приложении: оффлайн работа, запуск дневника за 1-2 секунды

Как 100 000 детей стали учиться лучше Образование, Москва, программирование, длиннопост

Также, я понимаю, что 100 000 людей - это не игрушки, поэтому использую свои каналы для распространения важной информации.

Например, рассказываю детям, что кроме ЕГЭ можно поступить и через олимпиаду.


На этом все!

Если тема окажется интересной, то в следующих расскажу какие я встретил проблемы при создании дневника, ИП и многое другое

Показать полностью 5
58
Клон контры на Unity - часть 4
18 Комментариев в Лига Разработчиков Видеоигр  

Очередной привет, товарищи!

Подоспела новая порция видосов про то, как я клонирую Контру с денди на юнити.

Всем интересующимся - приятного просмотра!

К концу шестнадцатого ролика имеем врагов-бегунов, специально обученных на то, чтобы умирать.

Клон контры на Unity - часть 4 программирование, Игры, разработка игр, gamedev, unity, unity3d, гифка, видео, длиннопост

Часть 13 - Изменение размера коллайдера лёжа:

Часть 14 - Бегуны - базовая механика:

Показать полностью 2
61
Цифровые бактерии - миниапдейт(много текста)
77 Комментариев  

Начало: http://pikabu.ru/story/i_snova_o_nelyogkoy_zhizni_tsifrovyik...


Дратути. Я смотрю, тема зашла :D Было дофига предложений, испытания на разных процах, фанфик от лица бактерии и даже онлайн-стрим! Если честно, я в ахуе xD Сделал тэг "цифровые бактерии" для хейтеров/лаверов, буду теперь постить эту фигню под ним.


Итак, краткие итоги:

Дофига народу просило исходники, так что ВОТ ОНИ: https://github.com/unrecovered/bacs

Залил сразу все, ковырять советую из папки 1.12 release, потому что в src сейчас песец и ахтунг. Также жду советов по управлению проектами на гитхабе, никогда этого не делал и слабо представляю чокак. Я бы конечно сам об этом почитал и разобралсо, но мой моцк ещё не отошел от вчерашних эротических рассказов про OpenCL.


Кстати о нём. Переход на OpenCL будет, но хз когда, потому что тема сложная, с наскока не взялась. Только начинаю понимать что к чему. Так что владельцы топовых видюх терпите пока, ещё покажете свою могучую письку :)


Про многопоточность. Треды в данный момент работают плохо, поскольку забивают весь доступный проц и мешают системе, рантайм-среде и основному процессу делать свою работу. Пока что оптимальная производительность(судя по многочисленным тестам) достигается при количестве тредов меньше либо равном половине ядер процессора. Будут переделаны, я уже примерно представляю как. Также, если есть специалисты по яве, отпишитесь, будет ли иметь смысл замена клонирования объекта на перезапись его свойств? По идее, количество объектов при этом станет постоянным, и нагрузка на сборщик мусора упадёт в разы.


Про предложения:

- Сделай динамическое освещение!

Будет


- А сделай броню, уклонение, криты, резайленс, удачу, шанс дропа

Господа, я честно скажу: это ВАЩЕ не тот вектор развития, который я вижу =) Базовых статов не должно быть много, и они не могут быть ни плохими, ни хорошими.


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


- А сделай вирус-убийцу, извержение вулкана, метание молний с неба, вампирш-лесбиянок...

НЕТ. То есть, когда-нибудь, возможно, что-то из этого будет введено. Но пока что жизнь/смерть бактерий должна зависеть только от них самих, с минимальным влиянием внешних условий.


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

Топ-каммент, так что я задумаюсь над этим. Но скорее всего, не раньше ввода OpenCL, потому что это потребует ЗНАЧИТЕЛЬНОГО увеличения масштаба. Ну и, минимальное влияние внешних условий, как я писал выше.


- Сделай многоклеточных.

Думаю над этим, но это несколько усложняет механику.


- Сделай изменение цвета не таким резким, чем сильнее мутировал, тем сильнее меняется цвет.

Насчёт этого... сделал, и сразу вспомнил, почему я ввёл рандомную генерацию:

Цифровые бактерии - миниапдейт(много текста) программирование, java, Эволюция, цифровые бактерии, гифка, длиннопост

Не знаю, как ваши глаза, а мои натурально вытекают Х_Х. Пока не знаю, что с этим делать


- Сделай возможность создавать гифки.

Учитывая количество всякой фигни, которая планируется, гифки я буду вводить пару лет :D Есть внешние инструменты, я вот пользуюсь LICECup(гифка выше сделана как раз в нём, плюс ресайзена гимпом)


- Сделай поддержку CLI(консоли)

Стандартный терминал имеет разрешение 80х24 символа, как вы себе это представляете? :D


О текущем прогрессе:

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


Однако теперь атаковать можно и родственников тоже(раньше действие атаки возвращало неудачу при применении на родственника). Уже есть очень весёлые результаты =)


Также будет изменение количества доступных команд при мутации.


И переработка движка - дело довольно муторное, поэтому не скажу, когда точно следующий апдейт.


Алсо, если есть желающие помочь:

- запилите ГУЙ! :D Обязательно кнопки старт/пауза/сохранить/загрузить, поля для статов бактерии и тыпы. Если не ломает - можете и функционал прикрутить. Всё в отдельный класс и отдельный файл (:

- запилите трансляцию логов в читаемый формат(из цифр в названия команд), можно вообще в xls

- ваще изи, сделайте нормальный разворот во весь экран! :D


я это всё могу и сам, но меня ломает (:

Показать полностью 1
631
И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ)
320 Комментариев  

Ссыль на саму программу(уже собранную, ставить ничо не надо, только распаковать) - в конце поста



Спасибо аффтару поста http://pikabu.ru/story/simulyator_yevolyutsii_na_unity__iskh... . Засадил сцуко мне занозу в моцк.


Дело в том, что я тоже любитель всякого накодить, и даже постил там своё творение(http://pikabu.ru/story/simulyator_yevolyutsii_na_unity__iskh... было заброшено по причине полной предсказуемости подопытных. И вот, две недели спустя я понял, что больше не могу сдерживаться.


Итак, встречайте: очередной симулятор лоскутного одеяла эволюции:

И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ) программирование, java, длиннопост, Эволюция, гифка

Напомню суть идеи. В замкнутом пространстве находятся условные организмы(каждая точка-отдельный организм).


Организмы жрут солнечный свет либо друг друга(либо оба сразу), накапливают таким образом энергию.


Когда организм накопит достаточное количество энергии - он делится. Если места для потомка нет - умирает, оставляя труп.


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


При делении они передают эти команды потомку. Плюс есть шанс мутации, когда одна из команд потомка меняется на другую случайную.



Это у нас с @Neptun общее. Теперь различия:


1. К программе прикручен КОНФИГ!(config.ini), где можно менять всякую разную фигню: размер поля, количество команд, шанс мутации и даже задать набор команд для начальной бактерии. Развлекайтесь! :D


2. Я упоролся и написал эту фиговину на яве. Почему на яве? Ну... я никогда до этого ничего не писал на яве, решил попробовать :D В общем, это несколько увеличило производительность. Теперь даже слабые компы без проблем обсчитывают поля размером 150х150.


3. Замкнутый мир-тор, то есть верх продолжается снизу, а лево - справа. И мы как бы смотрим на это безобразие сверху, а не сбоку.


4. Определение родственников. Бактерии не смотрят в код, они смотрят на ЦВЕТ :D Цвет отличается не больше, чем на 5 - родственник. Нет - подраться и захавать.


5. Консервативное общество

И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ) программирование, java, длиннопост, Эволюция, гифка

Картина Репина: родительская клетка убивает своего потомка


Суть в том, что в случае мутации бактерия меняет цвет на СЛУЧАЙНЫЙ(отсюда этот эффект лоскутного одеяла). Учитывая п.4 выше, это означает, что родитель может захавать своего едва родившегося потомка. Нетолерантно тут относятся к мутантам...


6. Статы! Кроме модели поведения, каждая бактерия имеет пассивные статы. Сила увеличивает шанс успешной атаки, а также расход энергии.

Выносливость определяет предельное количество энергии(при достижении его, клетка автоматически делится). Мутшанс отвечает за вероятность мутации. Пока, по моим наблюдениям, только сила является эволюционно значимой xD


7. Бактерии не имеют команды "делиться", они делятся автоматически, когда обожрутся до предела.


Теперь об игропроцессе. Всё начинается вот с этого засранца:

И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ) программирование, java, длиннопост, Эволюция, гифка

Увеличим:

И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ) программирование, java, длиннопост, Эволюция, гифка

Ещё немного:

И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ) программирование, java, длиннопост, Эволюция, гифка

Вот с него, ага. По умолчанию, он не умеет двигаться и есть трупы, только получать энергию от солнца. Поэтому игра обычно начинается с овер9000 трупов и ожидания удачной мутации.

После этого начинается бурное развитие разнообразных мелких группировок.


Также, длительные тесты выявили, куда стремится этот искусственно сгенерированный мирок. Он стремится к миру, гармонии и грёбаному мирному сосуществованию :D


Зато по результатам наблюдения я могу точно ответить, как добиться мира во всём мире:

Шаг 1:

И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ) программирование, java, длиннопост, Эволюция, гифка

То есть буквально, уничтожить всех, кто может атаковать


Шаг 2: Если потом появится кто-то, кто может атаковать - ДРУЖНО ПИЗДИТЬ ЕГО ПАЛКАМИ ПОКА НЕ СДОХНЕТ. Всё. Мир достигнут :D


Но я не смирился так просто. Я подумал, что они прекратили соперничество потому, что им нечего делить. И добавил механику освещения :3


Теперь чем дальше от центра, тем меньше энергии даёт солнцеедение. С аццким хохотом я собрал и запустил новый мир: 64 команды, 300х300, четверть миллиона итераций! Надо сказать, бои за центр были лютые, ни одна группировка не могла одержать верх надолго. Я с интересом смотрел, как они бьются за существование, жуя бутерброд. И думал о том, что кто-то может сейчас точно так же смотреть сверху на нашу человеческую возню...


Однако 250000 итераций спустя:

И снова о нелёгкой жизни цифровых бактерий(длиннопостЪ) программирование, java, длиннопост, Эволюция, гифка

...бля :D Опять мир и гармония. У кого есть идеи как сделать борьбу - предлагайте!


Что я планирую добавить:


- Показ характеристик бактерии при наведении мыши, как в первой моей программе.

- Старение(отключаемое в конфиге)

- Нормальный гуй с кнопками и полями, чтобы не приходилось вручную править конфиг

- Поскольку это чудо отлично грузит проц, можно добавить бенчмарк

- Бактерии смогут оценивать силу противника и действовать в зависимости от этого

- Призыв сильнейших - возможнось вытащить наиболее развитых особей для заселения нового мира

- Раздельный мутшанс для статов и поведения(сейчас общий)

- Квирки! Особенности, влияющие на механику(например, квирк "Мясоед" увеличивает энергию от поедания мяса и уменьшает от солнца)

- Шаблоны... сложная тема. Меня напрягает, что организмы аццки близорукие, они видят только непосредственное окружение. В древней игрушке про боевых змей "Snake Battle"(одна из первых игр непрямого контроля) была тема шаблонов. Каждый ход змея осматривала пространство вокруг себя(7х7 клеток) и сравнивала с шаблонами, заданными программистом. Если ни один не подходил - действие выбиралось случайно. Если находилось соответствие - действие выбиралось по шаблону. Не уверен, что введу, потому как сложно и сильно замедлит работу.


Что я не планирую:


- 3д. Не нужно.

- Гравитация. Не имеет смысла, мы сверху смотрим.

- Хексы. НЕТ СПАСИБО.

- Показывать исходники. Стыдно xD


И немного о лог-файле endgame.txt Он генерится после выполнения программы в её папке, содержит лог 30 случайных бактерий. А также время, за которое программа была выполнена. Так что можно меряться письками :D


Также внимание! Владельцы топовых i7 и особенно 8-ядерных амд! Если не в падлу, запустите программу 200х200 20000 итераций на 8 потоках. Мне интересно, как отработает и какое будет время :3


Ссыль на сие творение:


http://178.141.253.94/bacs.zip

Показать полностью 6
872
C++ за 21 день.
85 Комментариев  
C++ за 21 день.
1056
Крис Касперски погиб
163 Комментария в Информационная безопасность  

http://www.news-journalonline.com/news/20170213/sky-diver-in...


http://rsdn.org/forum/life/6717583


Николай Лихачёв aka Крис Касперски разбился при неудачном прыжке с парашутом.


Крис Касперски — российский IT-журналист, программист, автор множества книг и статей, посвящённых взлому и программированию. Наибольшую известность получили книги по ассемблеру. Писал в такие журналы, как "Хакер", "Компьютерра", "Системный администратор" и др. До 2008 года жил в родном селе в Краснодарском крае, потом переехал в США. Помимо деятельности в сфере IT, увлекался оружием и экстремальными видами спорта, чему посвящал множество постов на форумах и в блоге.

Крис Касперски погиб it, программирование, программист, хакеры
2412
NASA открыло свободный доступ к своему программному обеспечению
274 Комментария  

NASA открыло свободный доступ к каталогу программного обеспечения 2017-2018. Как говорится в официальном сообщении все программные продукты и алгоритмы могут использоваться совершенно бесплатно.

NASA открыло свободный доступ к своему программному обеспечению NASA, программирование, Тыжпрограммист, Open Source, халява, длиннопост

В каталоге представлено большое количество различных типов программного обеспечения.

NASA открыло свободный доступ к своему программному обеспечению NASA, программирование, Тыжпрограммист, Open Source, халява, длиннопост

Несмотря на то, что доступ открытый, существуют лицензионные ограничения. Например, некоторое программное обеспечение доступно только для США.

В то же время некоторые open source доступны на github. Например, проект «Worldview» satellite imagery browsing and downloading tool разработанный для интерактивного просмотра и скачивания изображений, получаемых со спутников NASA.

Показать полностью 2
795
Разбитые мечты
123 Комментария  

Детство. Любая проблема - виноват компьютер. Любая. Любой скандал, и только посмей что-нибудь ответить - это ты всё из-за компьютера такой агрессивный!!!!! Хуевая учеба? Виноват компьютер. Проблемы с одноклассниками? А нехуй было в компьютер играть. Из-за такой "заебательской" жизни стали сниться кошмары - ну точно компьютер. Любая тройка - ну, всё ясно, это тебе компьютер мозги жарит.

Разрешили играть в компьютер - это компютер виноват в плохоё учёбе. Запретили - тоже компьютер виноват, ведь я тебя сука знаю, сидишь на уроках и представляешь свои дурацкие компьютерные игры.

Помню, первый раз я познакомился с интересным программированием. Не в школе на уроках со скучными задачами в бейсике, а с интересным программированием. Заметка в журнале, о том как делают игры. Я прочитал. Мне стало интересно. Я понял, что программирование может быть интересным. Из-за этого я потом себе профессию, блять, выбрал, из этого говна вылез, в котором я был. Но тогда я не знал что так будет. Просто понял - моё. Попросил у родителей выписать диск с программой-конструктором игр. Что-то вроде "программирования для чайников". С конструктором блеать. Идиотское название. Мама, я не буду играть, я буду учиться. Что мне ответили?

Цитирую почти дословно:

Конструктор? Ты дурак чтоли? Ты посмотри сколько тебе лет, какой ещё конструктор?! Совсем в детство впал со своим компьютером!.

Единственное, что меня грело - мечта открыть свою студию компютерных игр. Ясен хуй, ничего я не открыл. Но ради этого я получил образования, ради этого я заставил себя сдать экзамены в сраный универ, из-за этого я, блять, зарабатываю при в два раза меньших усилиях примерно столько же, сколько зарабатывает мать. И что? Помню, в этом сраном детстве на волне идиотского оптимизма я как-то поделился своими мечтами с матерью. О-о-о, это было что-то. Такой взгляд "как на говно", как будто я решил стать гей-шлюхой, а не открыть сраную студию компьютерных игр. Еб*ный стыд.

950
Трудовые будни
52 Комментария  
Трудовые будни
Как ленивый любитель сосисок угодил хипстерам и офисным менеджерам
спонсорский пост от

Считается, что двухколесный транспорт начинает свою историю в 1817 году. Тогда изобретатель и ученый Карл фон Дрез сконструировал первый самокат и представил устройство как «машину для ходьбы». В 1916 году появился первый самокат с мотором. Разработку тут же взяли на вооружение почтовые и полицейские службы, но говорить об огромной популярности было сложно.

Как ленивый любитель сосисок угодил хипстерам и офисным менеджерам длиннопост

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

Лень, семья и колбаса

В 2000 году, словно по мановению волшебной палочки, снова произошел самокатный бум. На прилавках магазинов США появились первые алюминиевые красавцы — небольшие, легкие и прочные. На боках и деке красовалась резкая, как свист пролетающего мимо вас любителя скорости, надпись «Razor».

Показать полностью 8


Пожалуйста, войдите в аккаунт или зарегистрируйтесь