yorool_gui: (Default)
2017-04-11 01:04 pm

Про распределенный жж

Почитал комменты у Витуса http://vitus-wagner.dreamwidth.org/1893265.html и наконец сформулировал для себя, что же на самом деле нужно.
А нужна очень простая и давно реализованная вещь: собственный блог с кросспостингом на все платформы, где есть живые люди. В Жж, в дв, в гплюс, в твиттер, в фейсбук даже, не к ночи будь помянут.
Но: для полного счастья надо еще и вытягивать с этих платформ комментарии к посту. При этом возможность комментировать в самом основном блоге можно и не делать - пусть люди обсуждают где удобно. При этом читать обсуждения можно в одном месте, не ходя по всем сайтам.
Тогда не будет этих перебежек с хлопанием дверью и перетаскиванием архивов: оригинальный конь-тент всегда под контролем автора, остальное копии.


yorool_gui: (лысый)
2017-04-03 12:32 pm

"Живое"

В двух словах - говно. Нет, это даже в одном.

Один из эпизодов:
[космонавты по очереди включают все двигатели на "МКС"]
- Мы начинаем падать, мы войдем в атмосферу через несколько часов! Надо что-то делать!
[что-то недолго делают]
- Все получилось, мы вышли на геостационарную орбиту!

Да, я понимаю, что это скорее всего ошибка перевода. Но может и не перевода - там все примерно вот так :-/
yorool_gui: (лысый)
2017-03-30 09:19 pm

А сегодня мне вижуал студия вот что сказала:

fatal error C1001: An internal error has occurred in the compiler.
compiler file 'msc1.cpp', line 1468)
To work around this problem, try simplifying or changing the program near the locations listed above.

Ну нифигаж себе. Только я подходящий шаблон придумал, и теперь вот так вот
yorool_gui: (лысый)
2017-03-29 10:54 pm

(no subject)

Способ бессмысленно проебаться номер два:
1. в resource.h написать #define FOOBARBAZ 12345
2. в .rc файле написать FOBARBAZ MENU и т.д
3. никаких ошибок не выдается, просто .LoadMenu(FOOBARBAZ) не работает
4. наконец зайдя Far-ом внутрь сгенерированного .exe увидеть, что все ресурсы с номерами, а FOBARBAZ - с текстовым именем. И только тогда увидеть опечатку.
yorool_gui: (лысый)
2017-03-28 03:43 pm

(no subject)

Вот чего я не понимаю, это нафига делать на страницах всякие "защиты от выделения текста", "защита от копирования картинки" и т.д. Вот последний пример такого идиотизма - попробуйте скопировать картинку или сделать поиск картинки в гугле: https://afisha.yandex.com/nizhny-novgorod?eventId=55e1cd207abde91668ecc56e.
Не получается, потому что картинку эти верстальщики-говноеды разместили вот так - картинку в бекграунд, прозрачный пиксель 1x1 в img src:

<img 
class="image 
event-gallery__image event-image" src="https://yastatic.net/lego/_/La6qi18Z8LwgnZdsAr1qy1GwCwo.gif" 
alt="Ирина Богушевская" 
width="630" 
height="420" 
style="background-image: url(https://avatars.mds.yandex.net/get-afishanew/29882/d2f35e7501209f4dffdc4a7f31c65730/630x420);"
>


Ну и нафига это делать? От кого они защитились, объясните мне пожалуйста?
yorool_gui: (лысый)
2017-03-09 02:15 pm

(no subject)

Как бессмысленно проебаться час:
1. написать в .rc файле диалога 'PUSHBUTTON "OK",IDCANCEL,...'
2. при отладке не пользоваться кнопкой OK, а нажимать Enter. Обработчик OK при этом вызывается
3. обнаружить, что диалог не работает
4. искать ошибку где угодно, кроме обработчика OK - он же работал нормально
5. PROFIT
yorool_gui: (лысый)
2017-02-07 12:17 pm

(no subject)

http://sapojnik.livejournal.com/2375248.html - вот что называется "сказал, как в воду пернул". С разведением 1:100000000000000000
yorool_gui: (лысый)
2017-01-08 10:07 pm

Прощай пиздобол

Отписываюсь нахер от носителя жилета. Ибо масштаб вранья стал зашкаливать. http://awas1952.livejournal.com/7250479.html

yorool_gui: (лысый)
2016-12-20 12:49 pm

четное дерево

Решил эту штуку (https://www.hackerrank.com/challenges/even-tree, см репост ниже) на Rust-е, ушло около получаса на думание и часа 4 на программирование - правда заметную часть времени читал доки и боролся с borrow checker-ом.
Кстати, borrow checker действительно помогает. Обратите внимание на split_at_mut в calc_weights. Rust мне не позволил получить доступ на запись к элементам массива i и j вот таким образом:

let from = &mut v[i];
let to = &mut v[j];

что логично - это я про себя думаю, что это разные элементы массива. Но ведь возможно, что i == j и компилятор мне об этом напомнил. Пришлось сначала получить раздельный доступ к двум половинкам массива, гарантировав, что v[i] и v[j] различны

под катом решение
код )

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

Originally posted by [livejournal.com profile] avva at четное дерево
https://www.hackerrank.com/challenges/even-tree

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

По-моему, неплохой пример задачи для программистов, которая где-то на уровне интервью в Гугле. Мне сразу несколько вещей в ней нравится:

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

Я думаю, что если кто-то садится за эту проблему и меньше чем за час у него есть работающий код, то этот человек находится в хорошей форме в плане идти на технические интервью в Гугл/Фейсбук/Амазон итд. Все равно стоит готовиться, плюс еще есть интервью по system design, но для алго/кодинг это неплохие шансы, мне кажется. Конечно, люди, которые занимаются программистскими соревнованиями, щелкают такие задачки за 5-10 минут без проблем, но это другой случай, они натасканы на это. Я говорю про "просто программиста", который сомневается, идти ли на интервью и что там будет.

(чтобы проверить себя, я сел за эту задачу вчера, когда прочитал про нее. У меня был готова программа за 45 минут, включая проверку и отладку. Я пользовался https://repl.it/ для отладки, т.к. под рукой не было компилятора).
yorool_gui: (лысый)
2016-12-06 12:43 am

Westworld

Досмотрели сабж. Под катом спойлер:

Читать далее… )

yorool_gui: (лысый)
2016-12-02 12:40 am

не могу не утащить :-)

[livejournal.com profile] progenes: А можно идиотский вопрос? Вот дают переводчику книжку. Так он ее сначала читает всю, а потом начинает переводить или переводит по ходу чтения?
[livejournal.com profile] vitus_wagner: По-моему, это зависит от того, насколько он сильно кушать хочет. Если сильно - то сразу начинает переводить.
[livejournal.com profile] p_govorun: А вот художнику ещё проще. Он начинает рисовать, не читая, а когда нарисует, то читать и вовсе незачем.

Отсюда
yorool_gui: (лысый)
2016-09-26 12:58 am

(no subject)

Вассерман посмел отклониться от генеральной линии. Носители скреп его поправляют. В комментах пир духа!
http://awas1952.livejournal.com/6847431.html

yorool_gui: (лысый)
2016-08-19 07:37 am

Про отмену маршруток

А что, были сомнения, что так все и будет? Я хорошо помню, как ездил в университет с московского до появления этих ужасных маршруток,  которым не место в нашем прекрасном городе.  Больше не хочу. А хипстеры-урбанисты пусть идут лесом.
http://sapojnik.livejournal.com/2263118.html

yorool_gui: (лысый)
2016-07-11 05:24 pm

про рекламу - неадекваты из Ulmart

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



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

Мне одному это напоминает бизнес по русски - украсть вагон водки, продать, а деньги пропить?
yorool_gui: (лысый)
2016-05-24 08:57 am

(no subject)

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

yorool_gui: (лысый)
2016-02-14 02:24 am

об Rust

Решил я попробовать эту штуку. Впечатление от чтения документации очень хорошие. Будто взяли Haskell и выкинули оттуда то, что все равно слишком сложно для реальной жизни - ленивость, запрет побочных эффектов (к черту монады, стрелки и прочий матан), каррирование и вообще упор на извращения над функциями. Но оставили лямбды, замыкания, тайпклассы (тут они называются traits), паттерн матчинг и вообще представление программы как набора выражений.

Но вот в реальности все пока не так здорово.

Что я хотел сделать: написать на Rust клиент для Evernote.

Оказалось, что Evernote использует для внешних клиентов протокол Thrift - некая реализация RPC, как я понял. Протокол для конкретного приложения описывается файлами с расширением .thrift, из которых строятся исходники библиотеки для любого популярного языка. Кроме Rust-а, увы.

Есть реализация компилятора thrift для Rust-а от компании terminal.com, которые Rust активно используют у себя. Но реализация сырая, под windows по умолчанию не собирается, а собранная выдает искодники на Rust, которые без правок не компилируются.

И я почти прошел все грабли, добавил все недостающие определения в сгенерированные Rust-файлы и почти собрал реализацию Evernote-протокола на Rust, но уперся в итоге в тупик, из которого хорошего выхода не нашел.

Итак мне выдается ошибка
error: the trait `thrift::protocol::ThriftTyped` is not implemented for the type `ordered_float::OrderedFloat` [E0277]

Смотрю - да действительно, они этот Trait (это примерно то же, что интерфейс в яве или чисто виртуальный класс в C++) для OrderedFloat не реализуют. Т.е. они определяют этот трейт для кучи типов:

...
impl ThriftTyped for i32 { fn typ(&self) -> Type { Type::I32 } }
impl ThriftTyped for i64 { fn typ(&self) -> Type { Type::I64 } }
impl ThriftTyped for f64 { fn typ(&self) -> Type { Type::Double } }
impl ThriftTyped for () { fn typ(&self) -> Type { Type::Void } }
impl ThriftTyped for String { fn typ(&self) -> Type { Type::String } }
impl ThriftTyped for Vec { fn typ(&self) -> Type { Type::String } }
impl ThriftTyped for Vec { fn typ(&self) -> Type { Type::List } }
...


но вот OrderedFloat среди них нет. Ну ок думаю, определю его в сгенерированном файле сам, прямо перед использованием.
Пишу что-то вроде
impl ThriftTyped for OrderedFloat { fn typ(&self) -> Type { Type::Double } }

и - херак - получаю ошибку
error: the impl does not reference any types defined in this crate; only traits defined in the current crate can be implemented for arbitrary types [E0117]

Ну да, я читал в документации об этом запрете. Чтобы избежать запутанного и непредсказуемого кода, они разрешили реализовывать трейт для типа или там, где определен сам тип, или там, где определен трейт. Т.е. я не могу взять и сказать, например, что тип i32 теперь реализует оператор '+' (а операторы тоже можно перегружать через специальные трейты) как '-' - потому что не я объявлял i32 и не я объявлял трейт Add.

Но блин, вот мне прям щас надо сделать патч, а сделать я его не могу - точнее могу, если буду править прямо библиотеку, где этот ThriftTyped объявлен. Может я так и сделаю, но скорее всего брошу эту затею - что-то костылей уже многовато.
yorool_gui: (лысый)
2015-11-21 11:30 pm

Стартап



Поиграли сегодня в Стартап. Смысл игры - руководить ит-компанией, нанимать и увольнять сотрудников, делать проекты и на них зарабатывать. Из приколов:
- карточка проекта "Законопроект". Для выполнения нужны менеджер и контент-райтер. Бизнес модель - успешно выполненный проект приносит 4 монеты каждый ход. Ну гениально же.
- проект XXX-сайт. Берусь за него, нанимаю сотрудников и на следующем же ходу весь коллектив дружно сваливает. Доделываю проект в одиночку, вспоминаю http://www.anekdot.ru/id/643275/. При детях правда не стал рассказывать, они и так уже хихикали оттого, что контент-райтер на программисте лежал.


yorool_gui: (лысый)
2015-08-14 12:17 am

яндекс деньги + картинки из абхазии

Update: служба поддержки у Яндекса отработала быстро, уже на следующее утро ответили, а сегодня (15.08) все починили. Так что зря я на них ругался.

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

  • для того, чтобы получить пароль в приложении, надо добавить аккаунт в приложение

  • а чтобы добавить аккаунт в приложение, надо ввести пароль из приложения.

Охуительно.

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

КПДВ )