kika: (Default)
Вспомнил тут историю в контексте другого обсуждения, и решил повеселить публику.

Меня как-то наняли спасать проект с огромной базой кода на С++. Мягкий реалтайм, система управления буровой установкой для горизонтального бурения. Там был странный плавающий баг, который на симуляторе приводил к потере головки, то есть это нельзя было выпускать ни в коем случае. Они к моменту моего прихода искали баг всей командой уже три месяца. Я нашел баг (это было непросто и это оказался наш любимый off by one) исправил его, победно затрубил и запустил симулятор. Через 10 часов потерял головку. Стал искать баг опять. Нашел его снова, неисправленный. Тут Зоркий Глаз начал что-то подозревать и обнаружил 6 (шесть!) копий класса, который отвечал за считывание статуса и подачу команд на управляющую железку. Просто во всех местах где надо было пользоваться API этого класса, им надо было этот API чуть модифицировать и класс просто копировали, называли по-другому, подпиливали API и пользовались.

Кроме того, как выяснилось, железка не умела отвечать сразу нескольким клиентам, поэтому то, что у них все совсем не взорвалось было чистым везением (ну или невезением, взорвалось бы раньше, быстрее бы нашли).
kika: (Default)
8. Если вы собеседуете человека в несколько заходов (в один день или несколько) идите от младшего персонала к старшему, а не наоборот. Даже если в конторе не принято заглядывать начальнику в рот и пытаться ему угодить, все равно лояльные сотрудники будут подсознательно настраиваться на точку зрения начальства, а сотрудники на ножах с начальством будут наоборот, стараться перечить. В результате субъективная оценка качества кандидата превращается в силовую игру внутри компании, а сам кандидат остается сбоку.
В идеале, собеседовать человека должен нанимающий, плюс один-два его подчиненных для "подтверждения совместимости". Более вышестоящее начальство для вежливости может поговорить 15-30 минут с кандидатом, но решения они принимать не должны.
kika: (Default)
Офигеть, 10 месяцев не писал. Тут возник вопрос в ФБ и поскольку там даже свои посты-то с трудом найдешь, что уж говорить о комментариях, то решил написать сюда, ибо вопрос возникает редко, но регулярно.

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

0. Правильно составить объявление о найме. Сжато и быстро написать bid и ask. Что надо делать (на самом деле, а не всё на свете + еще немножечко) и что за это предлагается. Что делает компания и где лежат грабли (это важнее чем расписывать какая она leading и какие технологии bleeding). Грабли могут быть технологические (адовое легаси например), организационные (адский режим работы например), финансовые (от последнего раунда осталось полгода runway, и следующий раунд зависит как раз от результатов работы) и так далее. Это все равно всплывет, но тогда, когда вы уже потратите кучу времени. Не надо надеяться что вы "продадите" хорошему программисту (то есть человеку, предположительно хорошо умеющему в рациональное мышление) свою компанию. Если он может проигнорировать какие-то грабли - он придет на интервью как минимум. Если не может - то и не сможет, значит и на интервью не придет. С граблями лучше сгущать краски чем приукрашивать, верьте мне, люди.

1. Читаем резюме. Если идет поток треша, мы что-то не то написали в №0, идем обратно туда. Если говна не больше 80% с этим можно работать, но лучше оптимизировать. Я иногда получал практически 100% выход годных (когда натурально хочется позвать всех) но не знаю как это синтезировать искусственно. Быстро валидируем резюме на непротиворечивость (даты, продолжительности, технологии), потом выделяем интересные моменты (технологии, компании, обучение), причем не обязательно интересные для данной позиции, а просто знакомые лично вам, то есть что можно обсудить на интервью. Резюме русские писать не умеют, причем как не умели 20 лет назад, так и сейчас не умеют. Немного лучше научились оформлять разве что. Впрочем лучше пусть дальше так не умеют как скажем индусы умеют, когда резюме читать вообще смысла не имеет. Обратите внимание на оформление, кстати, если вы просили в ворде, а прислали - пдф, это звоночек. Если вы просили на английском, а прислали на русском или наоборот - это тоже звоночек. Это на самом деле важно, как показывает практика.

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

3. Задаем несколько вопросов как в №2, но по теме данной позиции и копаем вглубь пока лопата не зазвенит. Причем годятся любые вопросы, ответы на которые практически невозможно запомнить всухую. "А вы помните в каком релизе там фундепы внедрили?" Правильный ответ "что-то типа NNN или около того, но потом пришлось обратно всем откатываться, потому что оказывается что фундепы сломали тайпчекер, как оно тесты-то прошло, бгггг". Очень хорошо идут вопросы из резюме кандидата (из №2) но в приложении к технологиям из №3: "а вот вы рассказывали что вы делали ХХХ, а как бы вы сделали тоже самое, но уже с использованием YYY, которое нам нужно?". Тут люди очень часто заводятся и начинают увлеченно "проектировать" ибо чувствуют себя в своей тарелке. Вообще говоря, на этом месте иногда можно и закончить и послать человеку оффер (ну или наоборот), если повезет.
В завершение, если человек декларирует знание английского, то переходим на него и пару технических вопросов обсуждаем на английском.

4. Даем тестовое задание. Лучше иметь несколько на выбор, если ваше "основное" слишком длинное. Но в любом случае тестовое задание не должно быть больше 8 часов при требуемом вами уровне квалификации, а лучше меньше. Идеально - 4-5. Если есть возможность - не говорить кандидату на этапе №2 сколько именно вы рассчитываете займет задание. Просто отделайтесь "небольшое" и попросите его на этапе №5 оценить время самому.
Я стараюсь иметь бюджет на оплату тестовых заданий и плачу по разумной рыночной ставке, чтобы человеку было не обидно и замечено что люди даже за небольшие деньги гораздо внимательнее относятся к выполнению, включается психологический паттерн "работа". Задание даю так, чтобы его можно было сделать за отведенное время аккуратно, без висящих соплей. Стараюсь давать из существующего проекта, либо что-то новое (поскольку заплачено, то не стыдно и использовать будет) либо уже существующее (зато есть reference implementation и можно отдать на глубокое ревью тому, кто писал оригинал). Задание должно быть вырезано из существующего проекта аккуратно и не требовать экзотического тулинга и строго заданных ОС. Человек будет делать задание из дома, а там у него может не быть рабочего окружения, а просто игровой компутер с виндой. Можно дать доступ на EC2 инстанс, где уже все готовое установлено, а потом его просто убить.
Я читал много завываний что вырезать из существующего проекта небольшое изолированное задание очень тяжело, но что-то мне подсказывает что это у людей проблемы с проектированием и управлением проектом. У меня таких проблем никогда не было.
Задача должна быть реальная, делать что-то полезное, а не сортировать массив пузырьком, прости господи.

5. Ревью задания с кандидатом. Почему вы сделали так, а не иначе, что бы вы сделали если бы было больше времени, покрытие тестами, точки интеграции в "большой" проект, то есть обычная рабочая рутина. Посмотреть как человек вертится, как и что предлагает, насколько хорошо оценивает риски, и т.д. Желательно конечно убедиться что задание компилируется, работает и делает что обещано :-)

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

7. Никаких, упаси господь, задач из области компутер саейнса, вы программистов нанимаете, а не компутерных сайентистов. Если человек хорошо знает алгебру, логику, теорию категорий, графов, игр - это будет написано у него в резюме.
Никакого программирования в реальном времени на собеседовании, вообще кандидат должен при таком предложении вежливо распрощаться, это бред сивой кобылы (ну, кроме случаев когда надо в боевом режиме так программировать и это соответственно оплачивается). Никакого тестирования "стрессоустойчивости" при этом не происходит, ну что за бред.
Можно порисовать диаграммки на доске если интервью личное.
Если у вас так уж пригорает на тему "формального тестирования", то разработайте квиз с парой десятков вопросов системы "выбор из 4-5 вариантов". Но это пустая трата времени.
Никаких вопросов про пол, ориентацию, семейное положение, возраст, детей, etc. Это правонарушение и даже если вы нанимаете в какую-нибудь условную Руанду, где это не так, все равно ведите себя цивилизованно. Допустимо задать вопрос про командировки, если это требуется.

Нигде не написано в какой момент надо пригласить в офис посмотреть в глаза и поговорить. Это зависит от массы факторов, удаленности, бюджета, etc. Чем ближе к концу тем ниже риск, очевидно. Само очное интервью - это что-то из №2 и №3, но с бОльшим числом людей. Я нанимаю как с очным интервью, так и чисто удаленно и никакой разницы по качеству набора не вижу.

Набираю я хорошо, это по-моему, лучшее что я научился делать за 25 лет в этом вашем IT. К сожалению, я надеялся что научусь большему.

Пост наверное через некоторое время уберу во френдз-онли ибо я тут под своим настоящим именем и незачем давать готовую инструкцию "по прохождению интервью".
kika: (Default)
1. К разговору о http://kika.livejournal.com/151518.html?thread=2137310#t2137310
Простенький, но иллюстративный примерчик
https://gist.github.com/kofno/f5f34f03895e74727bc9

2. Надо написать некий сервис. Полночи читал что у мироздания есть на эту тему, нашел несколько SaaS сервисов и неплохую библиотеку от ASF (ну и гору плохих очевидно). Похоже что SaaSом обойтись не удастся, у них чуть другой юзкейз, поэтому придется писать на библиотеке, но должно быть несложно. Библиотека, очевидно (это ж ASF), на Яве, следовательно писать надо на Яве. Ну ок, с утра стою в душе и думаю - Clojure или Scala? Пытаюсь сообразить насколько придется освежать когда-то прочитанное. И только сев за компьютер до меня дошло что собственно можно же на Яве-то и написать!11 При этом на Скале я не писал вообще никогда ничего, на Кложе писал всякую муру подзаборную, чисто понять что за язык, а на Яве я как раз писал (ну, правда лет примерно 10-12 назад, ээээ).
kika: (Default)
Читая обсуждение http://ivan-gandhi.livejournal.com/3329246.html и ответы на мой коммент, я вдруг понял почему так тяжело идет. У меня нет никаких проблем барабанить на Erlang'е например, а Purescript, Elm или их идейный отэц Haskell (ну или ML) идет с гораздо большим трудом.

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

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

mov bx, ax
mov dx, ax
mov bx, dx
mov ax, bx

Потому что так у него оптимизатор работает, видите ли. Ну или еще почему. И надо было компилировать в ассемблерный листинг, читать его и руками чистить от этого мусора, потому что иначе в ПЗУ не лезло.

А в универе учили как на Фортране ряды Тейлора вычислять, что тоже не прибавляло.

В результате я всегда когда программирую или читаю программу, симулирую в голове стековую-регистровую машину и "исполняю" на ней программу. И какие-нибудь list comprehensions, лямбды или хвостовые рекурсии отлично на такой голове исполняются. А вот стрелки и монады - почему-то нет.

Нужна книжка или статья "Функциональное программирование для недохардверных недоинженеров". Реквестирую у мироздания.
kika: (Default)
На короткий консалтинговый проект нужен subj. У нас есть заказчик, который нанял индусов, которые запороли репозиторий, создав в нем 100500 бранчей, кучу брошенных на полдороги мерджей и whatnot. Надо взять это в руки, починить, привести обратно в мерджащееся состояние, выяснить какие бранчи таки нужны, какие нет, и т.д. Почасовая оплата (you name the price). Расположение неважно, важна квалификация. Код в репозитории на яве. Классический такой кровавый энтерпрайз.

Если у вас в багаже есть ява (томкат, джбосс, вебсфера), питон, линукс и желание работать в девопсе (собственно продукт моего подразделения - это готовые CI/CD окружения для разработки страхового энтерпрайза на яве) то возможно долговременное сотрудничество. $2500-$3500/mo, либо в офисе (Питер, Минск, Одесса, Рига) либо удаленно. Трактор потенциально возможен. Командировки в вышеперечисленные офисы и штабквартиру в СФ.

Резюме и почасовую ставку - kika АТ kikap ДОТ com
kika: (Default)
Ну вот как так можно написать, а? С той стороны приезжает JSON, я его парсю, нахожу в нем 'command', который 'exit' и в отладочной печати вижу "Now exiting the hive", но не вижу "Listener exits". И это нынче один из самых модных языков для разработки.
Read more... )
kika: (Default)
Я что-то не втыкаю, прошу помощи зала. Я хочу хранить JSON объекты в какой-нибудь простой базе, при этом не хочу руками заводить индексы. Хочу чтобы база сама парсила объекты и если в нем есть какой-то ключ, то по этому ключу заводила бы сама индекс. То есть я скажем пишу туда { name: "Vasya", surname: "Pupkin" }, и она заводит два индекса, добавляю в какие-то объекты birthday: "02/20/1969" - она создает третий индекс. Объектов - ну максимум десятки тысяч, то есть в принципе все можно держать в голове. Хочется без тяжелого рантайма, инсталляций с триллионом prerequisites и прочего девопс-кошмара.

В принципе это наверное можно соорудить вокруг Редиски. Наверняка почти любая RDBMS с этим справится тоже. Но хочется избежать "сооружения" и не хочется таскать за собой постгресс с кучей зависимостей или мускль со своими капризами.

Можно это соорудить вокруг Дивана (Кауча), если написать внешний кауч-процесс, который будет следить за новыми объектами и добавлять индекс при необходимости. Наверное я так и сделаю, если не найду ничего лучше, Кауч хотя бы заметно проще большинства RDBMS по части зависимостей, но все равно надо лепить горбатого вокруг. Зато хорошая репликация достанется бесплатно.

Или я извращенец и никому это не надо?
kika: (default)
Дима "Начосы" Быдлов всячески агитирует за профсоюз как средство защиты интересов профессионалов. Вот что значит настоящий русский интеллигент - у него ложные друзья переводчика существуют даже при переводе с русского на русский. Если союз профессиональный, то значит в нем состоят профессионалы! "А это, Петька, наука логика!"
http://avmalgin.livejournal.com/4157481.html?thread=216962857#t216962857

Я вот сколько раз не прочитаю такое скудоумие, все никак в толк не возьму - а почему у профессиональных программистов нету нигде профсоюза? Может они просто пока недостаточно профессиональны?
kika: (default)
Почитал http://users.livejournal.com/_winnie/407870.html и вдруг осознал что никогда в жизни не использовал svn. Было несколько раз когда просто чекаутил из чьего-то публичного репозитория и на этом всё (то есть буквально - ничего кроме svn co не использовал).
Как-то сразу с cvs переехал на hg, а потом на git, но гит я как-то еще не освоил.

Кстати, а если ли чего-нибудь интересненькое? Как-то вот была вспышка - Hg, bzr, darcs, потом git - и всё, конец истории.
kika: (default)
http://delvarworld.github.com/blog/2013/03/16/just-use-sublime-text/

Я всегда поражался людям, которые реально считают что при обычном вождении автоматическая коробка передач НАМНОГО удобнее механической. Меня ручка раздражает разве что в пробках, а называется ли константное положение рукоятки цифрой 5(6) или буквой D - мне как-то наплевать. Сами переключения происходят подсознательно. Но, похоже, что это не универсально и многих людей необходимость делать что-то даже подсознательно вгоняет в депрессию.
Вот, оказывается и при редактировании текста тоже бывает такая фрустрация. Трекпад, понимашь, удобнее клавиш. Бывает же.
kika: (Default)
http://news.ycombinator.com/item?id=4596375

слово h1b там встречается. и даже не обязательно в штаты.

Пробегитесь, кстати, по списку. Тут кто-то жаловался что мол, встроенным программистам делать нечего, везде сплошной уеб и руби на колесах. Вон, пожалуйста - Tesla Stationary Storage, Матлаб, R, embedded C и прочий хардкор.

И необязательно идти в какую-нибудь госконтору типа мелкософта или ибеем, посмотрите например на зарплаты эйчванбистов нетфликса на http://www.h1bwage.com
kika: (Default)
Это уже наше, родное.
shi shi shi shi, shi shi.

templates: ->
    template = @
    template while template = template.template and template.template()
kika: (Default)
Контекст: Мейл.Ру нопесал "скайп", то есть добавил в свой чатик видеозвонки. Для видео они взяли WebRTC и (как они заявляют) круто его допесали и все там зафиксили. Но правочки зажали (WebRTC выложен Гуглем под BSDобразной лицензией, так что что хочешь то и делай, интересно есть ли текст лицензии где-нибудь у агента в About).
При этом они сурово кинули на деньги SpiritDSP, отказавшись покупать у них спиритовский движок. Это, конечно, совершенно безнравственно. Спирит за это на Мейл.Ру наехал.
Срач: http://roem.ru/2012/06/07/addednews49266/

Ну и собственно my take on that:
Общепринятая в индустрии этика - выложить назад правки в опенсорсный продукт, даже если его лицензия не приведет в противном случае к судебному иску.

"Увы, мы не готовы спонсировать наших конкурентов." - это ущербная местечковость. За произнесение такой фразы нормальному человеку должно быть просто стыдно, по-моему. Это как ездить по Москве с мигалкой - это можно и это круто, но это неприлично.
Тот же гитхаб (чего далеко ходить) заопенсорсил все свои основные запчасти, и что-то это ни хрена не помогает другим social coding сайтам супротив гитхаба.

Я как-то читал один из бесконечных срачей на тему GPL/LGPL/BSD и там кто-то хлестко выразился в том смысле что для нормального человека все равно какая лицензия (сравнивалась LGPL и BSD-like), а вот для жлобов как раз нужна LGPL и дубина в виде лоеров из FSF. Ну неприятно же должно быть работать так чтобы белые цивилизованные плантаторы считали тебя жлобом, нет?
kika: (Default)
Ну натурально день победы. Посмотрите на этих лапочек:
http://mail.python.org/pipermail/pypy-dev/2012-May/009901.html
Here is the very first Python 2.7 interpreter to run existing
multithreaded programs on multiple cores.
kika: (Default)
Это достойно цитирования прям абзацами. http://roem.ru/2012/03/11/addednews44185/

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

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

Уровень зарплат и интересность задач в российских компаниях сопоставима с зарубежными

Интересность дело субъективное, а зарплаты меня заинтересовали. Я как раз недавно у [livejournal.com profile] sergeax вычислял вычисленьем очень длинным: налоговая ставка в Калифорнии - примерно 33% на интересующий нас размер зарплат, зарплата нормального программиста - 80-120К, минус треть - получается 55-80 на руки, 5-7К в месяц примерно. Это что, прогресс хотя бы в Москве дошел до 150-200К рублей в месяц чистыми для просто хорошего программиста? Или "сопоставима" - это г-жа Анна имеет в виду "по порядку величины", то есть и там и там "тыщщи долларов11"?

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

А как же стабильность и плачущий полковник кагебе? Кстати, после того как заметная часть советской промышленности наконец перевернулась кверху пузом, во многих местах России экология стала заметно лучше (заметно - в смысле буквально, органолептически). Например, если кто помнит эманации ЗиЛа. Или Москвича. А вот тухлые продукты в илитных магазинах - это не потому что экология. Это потому что таможня.

Mail.ru собирается готовить для себя кадры, сотрудничая с университетами, открывая технопарки и научные кафедры, платя стипендии студентам.

В свете выше и нижесказанного слова "для себя" звучат тонким троллингом.

Между Яндексом, Google и Mail.ru существует "негласный пакт о ненападении", помогающий избежать переманивания сотрудников и раздувания зарплат.

У меня для г-жи Анны есть ВНЕЗАПНОЕ откровение: картельные сговоры работают только в условиях замкнутых систем. Жаловаться на утечку рабочей силы и искусственно занижать ставки в одном и том же абзаце интервью - это сильный ход. Это в мейлру все вицепрезиденты такие дуры или держат одну, специально, чтобы журналистов пугать?
В Калифорнии, кстати, это явно запрещено. И г-жа за такое признание осталась бы без работы, э, ну очень быстро. Может быть даже в тот же самый день.
kika: (Default)
Годный троллинг, имхо. Толстоват, но годен.

Originally posted by [livejournal.com profile] raydac at путинское
вот любопытно так сравнить
есть две инновационные российские компании
1. http://dz.ru/portfolio/clients/
2. http://yourkit.com/customers/index.jsp
владелец одной из них за путина, другой против путина
kika: (Default)


class Backbone.Model extends Backbone.Model

  ...

class Backbone.Collection extends Backbone.Collection

  model : Backbone.Model






С другой стороны, ну может же быть у человека имя Иван Иванович? Почему бы и тут не?
kika: (Default)
Обсуждали сегодня пути развития в конторе (у нас тут смена парадигмы, концепции, выброс всего в окно, закапывание в огороде, революция, эволюция, гражданская война и затяжной алкоголизм в анамнезе). Ну и собеседник (будучи закаленным в боях линукс-админом) сказал "я вообще слышал что есть планы на винде девелопить, зачем мы будем нужны?". И тут мне пришло в голову, что а какая собственно разница-то? Что, есть катастрофическая разница на чем JVM работает? А Эрланг? Из фундаментальных основ современных прикладных стеков до недавних пор на винде не работал разве что Node (что меня всегда, с момента узнания о существовании Node, несказанно удивляло, ибо винда это и есть такой Node, только без JS, для эффективности. Аж с 199х-какоготамгода. Только API бессмысленно сложный.).

Ну да, operations процедуры надо будет пересмотреть на самом нижнем уровне, реимадж новой системы, драйвера там, апдейты, то-се. Это даже не 50% работы на самом-то деле, а по сложности - вообще дай бог 10%. Основная масса проблем - с продуктом собственно. А он ТАК будет работать на чем угодно, хоть на мсдосе. По-моему самая большая проблема - это эти идиотские буковки дисков и дебильные обратные слеши. Ну и все, собственно. С точки зрения финансов совершенно, правда, непонятно за что платить мелкософту такие адские деньги за лицензию (у нас 300+ серверов, прикиньте почем будет 2008R2, даже не DE, а обычный). Если в общем и целом, что оно, что ЦентОС, что Соплярис - один хрен.

Реально-то операционной системой сейчас является JVM, а будет OTP или Нода. Ну или еще что-нибудь, Scala/Akka.

Красноглазие и мастдай как-то незаметно соскользнули в прошлое, а я и не заметил. OS is not relevant anymore. Huh.
kika: (Default)
Граждане погроммисты, а есть ли какая-либо адекватная причина тому, что маленький и мягкий компилятор языка С до сих пор поддерживает только C89? Я собственно могу представить себе только одну причину - человек, который написал анализатор, уволился примерно 20 лет назад и с тех пор в этой компании никто не может асилить синтаксический разбор языка Ц.

Profile

kika: (Default)
kika

January 2017

S M T W T F S
1234567
89 1011121314
151617181920 21
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 21st, 2017 12:19 pm
Powered by Dreamwidth Studios