dluciv: (Default)
Присылает мне ЖЖшечка письмо: пользователь [identity profile] ru-iichan.livejournal.com укоряет меня за то, что я давно не писал у себя в ЖЖ. Ни фига подобного, около месяца назад писал про снегопад в Питере. И даже картиночки выкладывал. Но раз укоряет, то напишу, ладно уж.

Неожиданные восторги насчёт того, что теперь Котлин из коробки входит в Android Studio, мне кажутся немного странными.

Дело не в том, что лично мне не особо нравится Kotlin. Дикого восторга не испытываю, но язык как язык, приличный. А если сравнивать с родной Java, то даже и ничего себе, можно пользоваться. И не в том, что JetBrains — не градообразующее или социально значимое предприятие, а большей части читателей Фонтанки фиолетово, на чём пишут приложения под Андроид. Хотя конечно здоровый и позитивный патриотизм — вещь хорошая, а в наше время ещё и нечастая.

Дeло в том, что JetBrains ногу в дверь засунули гораздо раньше, когда появилась сама Android Studio, созданная на базе IntelliJ Idea. Засунули и сделали большой шаг. А Котлин там потом мог и мимо проходить — так почему бы и не добавить.

UPD: Мне тут объяснили, насколько я неправ. Т.е. в техническом плане прав, а в плане публичности — нет. См. комменты (в жежешечке).
dluciv: (IBM)
Весна 2000 года. Я заканчиваю второй курс на Матмехе СПбГУ.

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

Не в пример другим конспектам, которые тогда ксерили, этот был отсканирован. Или нуждающийся в конспекте пропил деньги (ксерить-то платно было, да и есть, а сканеры у многих были свои), или выпендриться решил, или честно собрался обогнать своё время... Не помню. Ксерили ещё несколько лет после этого. Активно сканировать, а вскоре и фотографировать стали лет через пять, с приходом ADSL, флешек и с распространением формата DjVu, про который сейчас тоже как-то стали забывать понемногу.

А в 2000-м у меня ни флешек, ни ADSL не было, а была пачка дискет на 1440 КиБ, отформатированных на 1600 КиБ. Вообще дискеты можно было хитроумным форматированием дожать и до 1720 КиБ с копейками, но тогда с ними или Windows NT 4, или FreeBSD 3 (не помню, кто из них, а может обе) отказывались работать.

Поездка в центр города и обратно на метро вместе с преписыванием дискет и параллельным хлебанием чая с синим слоном (в советском, а не доброчановском смысле, хотя второй наверное произошёл от первого), заняли у меня 2 часа. Я всё довольно точно оценил, и решил поступить именно так, потому что у меня был модем, который передавал данные с максимальной скоростью 14400 бит в секунду (да, внутренний USR Sportster на шине ISA).

А теперь внимание, задачка: в предположении, что на 10 дискет по 1600 КиБ скан конспекта влез впритык (это конечно было не так, но предположим):

  1. Какой минимальной должна была быть скорость наших с одногруппником факсмодемов, чтобы я решил не ехать с дискетами на метро, а соединиться по телефонной линии (допустим, одногруппник тоже был согласен надолго занять телефон =)) и хлебать чай у себя дома?

  2. Почему я упорно писал размер дискет в КиБ? В чём подвох? Почему я нестал писать 1,44 и 1,6 с другой единицей?

Комментарии скринятся (надеюсь =)).
dluciv: (линейка)
В Котлине, если ты хочешь сделать функцию с локальными переменными, придётся возвращать значение при помощи return.

fun bugaga() {
  val z = 5
  return z
}



Я это конечно объехал, но код на мой вкус красивее не стал =):

fun bugaga() = when(true) { else -> {
  val z = 5
  z
}}


Ещё можно написать, как иногда пишут на JS, и надеяться, что заинлайнит лямбду:

fun bugaga() = ({
  val z = 5
  z
}())


Для этого даже есть специальная затычка run, чтобы выглядело немного пристойнее (скобок меньше):

fun bugaga() = run {
  val z = 5
  z
}


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

Наконец, можно просто присвоить лямбду в переменную/константу, написав:


val bugaga = {
  val z = 5
  return z
}


В какую жесть это выльется, см. в комментах.

Но почему хотя бы для тел функций не сделать исключение? if, в конце концов, в Котлине нормальный же.

Или я чего-то очень-очень не догнал (надеюсь), причём не я один, а ещё как минимум один мужик, или Котлин пилили фанаты goto...
dluciv: (линейка)
Между тем, мы пропустили довольно важное событие в мире IT и связи.



Меньше месяца назад появилась программа, которая может подготовить (зашифровать) данные так, что при помощи обычных глобальных компьютерных сетей их можно будет предать в любую точку мира!

Вот это чудо.

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

Интересно, насколько сложно будет передать пару гигабайт сюда: geo:51.48,0,-2000000;u=2;crs=wgs84 (на 2000 км под Гринвич). Надо бы спросить у автора, его контакты указаны...
dluciv: (линейка)


— Конечно же теми, которые и так знает мой 4G-модем!
— Но почему? Ведь существует множество различных USSD-команд!..
— ...

Мегафон продаёт Wifi-роутер с LTE-модемом Huawei-E5372 под названием «Мегафон MR100-3». На самом деле очень неплохая железка. Основной интерфейс — веб-морда + какие-то вебовые же API для родного приложения от Huawei. Но, как обычно, брендирование вносит [только] недостатки. В случае с Мегафоном их два:

  1. Модем лочат под, собственно, Мегафон (в принципе дело поправимое с точностью до гарантии, но не об этом здесь речь).

  2. В модем грузят свою «улучшенную» прошивку, которая не позволяет выполнять произвольные USSD-команды. Зато в ней есть ну ооооочень нужные ссылки на сервисы партнёров и на изменение гудка. Да-да, гудка. Ведь при помощи 4G-модема все только и делают, что принимают входящие звонки, не правда ли? =)

Всё то же самое (как минимум) справедливо, по слухам, и в отношении других операторов, но я не проверял.

Тем не менее, USSD выполнять хочется. А на тему того, как сделать так, чтобы не только хотелось, но и моглось, умные люди дали хороший совет.

Однако покорный ваш слуга решил пойти чуть дальше и облечь всё это в более дружелюбную форму, написав для исполнения USSD простенький юзерскрипт на три строчки (а что такое юзерскрипт?..). Позволяет при помощи пользовательской менюшки GreaseMonkey/TamperMonkey/что-у-вас-там показать в веб-морде модема интерфейс для выполнения любых USSD-команд. Позволяет и ходить по USSD-меню. Прощайте, страдания!

Не исключено, что скрипт будет работать и на некоторых других модемах Huawei. И даже у некоторых других операторов. Не проверял, писал для себя =).

P.S. Компания МТС отличается тем, что очень плотно мониторит Жежешечку и Твиттер. Более того, соответствующие её сотрудники мне пару раз помогали в разрешении некоторых непоняток (реагируют очень быстро, стоит только пожаловаться на жизнь — сразу тут как тут). Пользуясь случаем, хочу их поблагодарить. Но речь в данном конкретном случае о Мегафоне. Вдруг Мегафон мониторит так же добросовестно?.. Так вот, ребята из Мегафона, дальше для вас. Во-первых, людям нужны USSD. Не как воздух, конечно, но порядочно так. Во-вторых, я использовал на картинке ваш зелёный™ цвет, ничего? Мало ли, сейчас любят числа патентовать, может быть у вас тоже какие-то запатентованы =). Обращайтесь, изменю немного, если что. Никто не заметит, даже вы сами, но всё будет ок.

P.P.S. Макс Смолев, который, вообще говоря, автор картинки (и на картинке это честно написано) тоже может внезапно увидеть сей пост. В общем, Макс, если ко мне будут какие-то вопросы — я человек относительно вменяемый, бывают и такие, да =).

P.P.P.S. Думал-думал, что бы в этом посте под кат засунуть, да как-то нечего...
dluciv: (линейка)
Про Лого номинально принято говорить, что он является функциональным языком. Изредка говорят, что он, с точностью до синтаксиса, даже диалект ЛИСПа.
Глядя на разные милые графические упражнения с черепашками, в это поверить тяжело. Легче становится поверить, конечно если более или менее представляешь себе, как работают трансляторы ЛИСПа, когда увидишь квадратные скобки вокруг блоков кода в управляющих конструкциях. Когда смотришь на них, постепенно начинаешь видеть древних монстров. И уже веришь в то, что искуственный интеллект на Лого тоже пытались, да и до сих пор пытаются программировать (а ЛИСП так и вовсе для этого был сделан).

Один товарищ написал программу на Питоне, которая завершалась сегфолтом. Увидев это, он радостно воскликнул: «На C можно писать на любом языке!»
Под катом мы попытаемся при помощи Лого программировать на ЛИСПе.
Итак, насколько же Лого функциональный язык?.. )
dluciv: (криптопридурок)
http://onerng.info/whatisonerng.html



Я уже было порадовался, что QRBG (исходная железка кстати вполне настоящая, вот она http://qrbg.irb.hr/) продают, но потом посмотрел схему https://raw.githubusercontent.com/OneRNG/hardware/master/v1.0/schem.png и увидел слова "Avalanche diode", так что генератор оказался вовсе не квантовый, а термодинамический. Но всё равно молодцы.

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

Почему же генераторы случайных чисел не делают на их основе? Вроде идея-то очевидная, её должны, казалось бы, дорабатывать изо всех сил: http://crypto.stackexchange.com/a/12715
dluciv: (IBM)
Я летом 2009, не пользуясь ещё Дропбоксом, написал вот такой опус.

Не только написал, но и сделал. Взял Mercurial, взял штуки три хостинга и написал нехитрый скриптик, который делал push и pull со всеми тремя. Прелесть была в том, что когда один из хостингов сдох, я почесал в затылке и просто забил. Ну подумаешь сдох один из трёх...

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

Конечно в Git и Mercurial я видеофайлы не клал, да и история, по большому счёту, нужна далеко не всегда (хотя с ней, понятное дело, надёжность слияния повышается). В общем ясно, что они не для того. Для всего относительно повседневного и большого с осени 2009 был и остаётся Дропбокс. Который сегодня недвусмысленно даёт понять (мне так до сих пор), насколько всё в мире бренно.

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

Версионирование мне не нужно, а зато нужна прозрачность (чтобы само мониторило файловую систему). Кроме пропиетарной BtSync, требующего прямого сетевого соединения Unison, работающего поверх того же Гита SparkleShare и требующего своего сервера OwnCloud (кроме приватности ничем не лучше облаков), что ещё есть на эту тему?
dluciv: (линейка)
Я подумал, что мой роутер тоже должен протестовать против «закона против Интернета».

И тоже поставил на него заглушку: gopher://gopher.dluciv.name/ (через проксю).

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

УЭК

Nov. 21st, 2012 10:26 am
dluciv: (большой брат)
В 2013 году гражданам России, написавшим заявления в 2012 году (а остальным с 2014), будут выдавать универсальную электронную карту. Флэшовая заставка на сайте какая-то стрёмная по-моему (видно, что люди ненастоящие и, если поймают, сделают таким же), но не суть.

У них на сайте есть FAQ, который я добросовестно читал, кажется, больше часа. По итогам у меня остались несколько открытых вопросов, которые я им задал через форму обратной связи, но никакого ответа не получил. По всей видимости, плотно общаясь с государством, они всё время попадали на чиновников вроде начальника питерского ЖКХ и чему-то у них научились. А ведь есть и нормальные чиновники, но ребятам, видимо, не повезло.

Тем не менее, как показывает практика, даже мой мало кому нужный ЖЖ иногда бывает полезен. Так, примерно год назад я договорился с МТС, которые не совсем правильно меня тарифицировали, только при помощи открытого диалога здесь. Попробую действовать так же.

Итак, заданные мной им вопросы, и не только, которые остались без ответа.
Собственно... )
Вдруг возымеет действие...
dluciv: (криптопридурок)
В Твиттере вовсю в ходу тег #говнореестр, спасибо партии родной.

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

Поэтому я ввожу в употребление противоположность говнореестру — доброреестр. Доброреестр (или на эсперанто — bonaregistro) — не какая-то определённая база, а достаточно произвольный класс понятий. Вот например это — доброреестр, потому что он проливает свет на сумрачный говнореестр. Ведомость, в которой я ставлю хорошим студентам пятёрки, это тоже доброреестр. А если кто-то злой (не я, конечно) им ставит там трояки, это уже получается говнореестр. Меню в ресторане — безусловно доброреестр. Список тех, кому я должен — говнореестр, а список тех, кто должен мне, конечно же, доброреестр. Ну и т.д.

Всё, теперь терминами можно пользоваться спокойно.
dluciv: (очки)
Сейчас я выдам маркетинговое соображение на миллион долларов.
Жалко, что я на 999‰ не первый.

Итак, что мешает использовать полноценно функциональные языки в средах Java и .NET? Я даже задам более частный вопрос: что мешает использовать языки, управляющие конструкции которых являются выражениями?

Я знаю ответ на этот вопрос. Жирный фреймворк, жирные сторонние библиотеки и жирный код прикладных программ.

Автодополнение и кусочки документации по функциям, вылезающие при редактировании кода, это, конечно, хорошо. И помогает. Но проблема в том, что как в «родном» фреймворке (нечасто, родные фреймворки обычно хорошо проработаны), так и в сторонних библиотеках (сплошь и рядом) семантика вызываемых функций не всегда ясна программисту.

Я уже достаточно толст, стар и бородат, чтобы легко выдержать поток яиц с помидорами, который полетит в меня после того, как я скажу, что в таких ситуациях нередко помогает пошаговый отладчик. Может помочь и отладочная печать. Большой разницы нету, но первое быстрее. Они очень неплохо дополняют фиговую документацию, а часто и заменяют отсутствующую.

Так вот, даже функционального языка не надо, достаточно C# 4.0 с LINQ — это уже система со сносной выразительностью. Если только Вам позволено писать программу, в которой используются большие ВЫРАЖЕНИЯ, Ваша программа становится короче и выразительнее, но для отладки часто приходится эти выражения дробить и считать с использованием временных переменных. Потому что без отладки не всегда ясно, что всё-таки делают её части. А уж если программа вдруг не Ваша, а чужая...

Да, человек, который написал программу, являющуюся большим выражением, без единой лишней (без которой можно обойтись) временной переменной, вызывает уважение. Иногда даже стоит очередь из желающих уткнуться к нему в бороду. Но одно дело авторитет, а другое — реальная польза.

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

Ну что, не поубавилось охоты писать на F# и Scala? У меня кстати, не смотря на собственные разумные, казалось бы, доводы, почему-то нет =).
dluciv: (Default)
Меня периодически тянет поработать на крыше. Когда погода не жаркая и не холодная, когда крыша удобная — кайф же. На Матмехе одно время на крышу вёл один удобный открытый выход через мужской сортир. Поэтому щепетильных барышень туда (и обратно) можно было доставить, только поставив на входе и у окна часовых. А некоторые даже на таких условиях отказывались.

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

В пятницу двое преподавателей нашей кафедры были в гостях у коллег в компании Digital Design. Они активно работают со студентами и вкладывают в образование много ресурсов, а главное души, поэтому мы являемся их коллегами и как преподаватели, и как программисты.

Так вот, у Digital Design с крышей всё ок (и вайфай ловит). Один раз, говорят, охрана бизнес-центра наехала на них, когда они пускали с балкона бумажные самолётики. Этого маразма я, конечно же, не понял, но говорят, что если самолётики не кидать, то всё хорошо. На Матмехе охрана периодически наезжала на нас по более существенным поводам: им не нравилось, что мы вместо проходной пользуемся окнами первого этажа.

Ну и несколько фотографий. Вообще изначально текст был про крышу, но на фотографии попали замечательные люди, а между ними разок даже я затесался, так что представлю людей:
  • Александра, менеджер по корпоративным коммуникациям,
  • Дмитрий, начальник IT-службы (дядя в очках),
  • Максим Викторович, преподаватель нашей кафедры (Большой дядя с чашкой. На самом деле он был с сигаретой, но в момент съёмки он что-то наколдовал, и на снимках он с чашкой, но я-то правду знаю),
  • Ваш покорный слуга, преподаватель нашей кафедры (дядя, который с бородой).
Фотографии такие мобильные, что аж трогательно.
dluciv: (Default)
Как, мой социально значимый пост про Emacs, ЛИСП и гиперпространство не выводят в топ?

Не может быть! Я негодую!



dluciv: (Default)
В западноевропейской цивилизации 14 февраля принято считать днём любви.

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

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

Очень милая, правда? Но программисты оценят не только, и даже не столько её очаровательный внешний вид. В конце концов, программисты и так не обделены вниманием самых очаровательных женщин — программисток. Программисты оценят тот вклад, который она внесла в становление их профессиональной терминологии и их образа мышления (эти две вещи неразрывно связаны, как известно).

Собственно программисты её очень уважают. И, часто не признаваясь в этом, испытывают к ней платонические чувства. Фамилия её, кстати, была Lovelace, что до какой-то степени соответствует.

На днях представителями отделения информатики Матмеха СПбГУ было сформулировано несколько слоганов, говорящих о нашей страсти к фундаментальной информатике (Computer Science), программной инженерии (Software Engineering) и информационным технологиям (Information Technologies). Лично мне больше всего понравился следующий слоган:

SECS. I'm loving IT!

А в честь сегодняшнего 195-летнего юбилея главной героини на сайт кафедры системного программирования прилетел агитационный дирижабль (сам дирижабль - часть отдельной истории), помогающий нам поделиться своими чувствами.
dluciv: (IBM)
COBOL'у сегодня 51 год.

Краткая справка для молодёжи:

Java — тот же современный COBOL, с той лишь разницей, что COBOL лучше подходил для своих типичных задач, чем Java для своих. Отчасти это произошло из-за того, что на Java пишут очень много информационных систем, для которых она не предназначена. Java просто не повезло. И индийского легаси-кода на Java в итоге будет ещё больше, чем на Коболе.

На Хабре, как часто бывает, народ разделяется на сердито топочушую ножками школоту (не по возрасту, а по стилю мышления) и на людей, которые в теме: http://habrahabr.ru/blogs/history/94792/#comment_2887980 . Не глядите, что этот коментарий про веб-программирование. Чувак действительно просёк.

Главный автор COBOL'а - дама. Звать Грейс Хоппер. Но это не принципиально. Дамы, вообще говоря, делали чудесные языки программирования, и COBOL - один из примеров. Принципиально то, что она была контр-адмиралом ВМФ США. Т.е. её язык был расчитан в том числе и на тех программистов, у которых в голове сразу больше одной мысли не помещается. Кстати, термин "баг" - тоже её дитя.

Вот она до создания COBOL'а:



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

А вот - после:



Я тоже хочу такое умиротворённое выражение лица в 78 лет. Но это надо заслужить.
dluciv: (большой брат)
Преподаватели информатики с Физфака очень суровы:
Все действия, способные причинить ущерб операционной системе компьютеров, к которым вы получили доступ, будут рассматриваться как намеренная порча оборудования.
Пруфлинк: http://gr2.phys.spbu.ru/Informatika/common/rules.html
Т.е. если действие способно причинить ущерб ОС, то оно приравнивается к уже совершённой намеренной порче железа. По-моему это ещё круче приравнивания меня к пособникам террористов за то, что я сомневаюсь в фильтрах Петрика =).

dluciv: (Default)
Как часто у меня бывает, текст будет об одном, а вывод о другом. Пост написан плейнтекстом из принципиальных соображений.

Моё первое знакомство с интернетом было сугубо теоретическим, и я пришёл к выводу, что интернет не нужен.

Много )
dluciv: (Default)
Ещё не^Wмного об электронной почте. Это адресовано, скорее, молодёжи, продвинутой в области IT или интересующейся, но интересным может оказаться для всех.

Погрузиться... )
dluciv: (Default)
Есть небольшая (совсем) категория студентов, которым при программировании компьютер в тягость. В принципе. Их уровень абстракции не позволяет снизойти до пыльной железки. И железка отвечает им соответственно. И я их (и студентов, и железки) в чём-то понимаю. Мне знаком профессор с Матмеха, который долго избегал любых тем, связанных с информатикой, потому что ему внушала отвращение модель Фон-Неймана. И вполне резонно, на мой взгляд. В общем с этими товарищами всё ясно.

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

Нужно-то не так много уметь:
  • пользоваться любым нормальным текстовым редактором (а не блокнотом);
  • желательно, но не обязательно — пользоваться нормальным файловым менеджером (а не проводником);
  • представлять себе, что такое вообще файловая система;
  • уметь работать с командной строкой — хотя бы на начальном уровне манипулировать командами и результатами их выполнения. 

Никак им не помог семестр, проведённый под Линуксом. Во-первых, Юникс-подобные системы сейчас уже достаточно дружественные, во-вторых даже от тех навыков, которые эти товарищи приобрели, они избавились с максимальной скоростью.

Боюсь, что следующим первокурсникам действительно потребуется выделить целый месяц на «обучение работе с ПК», а не два занятия (а по факту и столько не делают), как предлагается в программе.

July 2017

S M T W T F S
      1
2345678
91011121314 15
16171819202122
23242526272829
3031     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2017 08:45 am
Powered by Dreamwidth Studios