Полтора года назад я устроился в PT. За время работы встретил много хорошил людей, многому научился, но в какой-то момент почуствовал, что мне пора уходить.
Вчера был мой последний день в Positive Technologies.
Полтора года назад я устроился в PT. За время работы встретил много хорошил людей, многому научился, но в какой-то момент почуствовал, что мне пора уходить.
Вчера был мой последний день в Positive Technologies.

Утащил к себе в блог, чтобы не пропало. Очень уж меня эта картинка задела. Нашёл тут.
Пробую силы в решении олимпиадных задач. Начал свои попытки с архива задач Online соревнование по программированию в МФТИ. Сама идея выполнения таких заданий показалась интересной, хоть и непривычной. Но вот эта площадка меня не устраивает, потому что на сервере код проверяется python 2.1.3, который совсем старый и забытый. Для того, чтобы у меня код прошёл проверку по задаче 027, мне пришлось модифицировать вот такой код
def search_odd_number(count_of_numbers, numbers):
i = 0
while i < count_of_numbers - 1:
if numbers[i] ^ numbers[i + 1] != 0:
break
i += 2
return numbers[i]
print(search_odd_number(int(input()), sorted(map(int, input().split(' ')))))
в такой:
# >>>> for python 2.1.3
from string import split
def sorted(s):
s.sort()
return s
def search_odd_number(count_of_numbers, numbers):
i = 0
while i < count_of_numbers - 1:
if numbers[i] ^ numbers[i + 1] != 0:
break
i += 2
return numbers[i]
print(search_odd_number(int(raw_input()), sorted(map(int, split(raw_input())))))
Тратить время на адаптацию кода под старый python мне не хочется, поэтому поищу новую площадку для развлечений.
Заодно открыл доступ к репозиторию с решениями (вроде бы это не запрещено) - https://bitbucket.org/grigoriytretyakov/prochallenge.
В прошлом году я проходил курс по программированию на Python'е (An Introduction to Interactive Programming in Python). Записался на него по нескольким причинам:
Мне было интересно, как будет проходить дистанционный курс обучения. К тому же вариант с запуском программ непосредственно в браузере меня тоже заинтересовал. Всё таки не каждый день встретишь использование python, написанного на javascript.
Мне нравится моя профессия, мне нравится сам python, и я всегда интересовался разработкой игр, а тут курс, который даёт возможность написать пару простых игр. Потратить на это время казалось неплохой идеей. Так оно и было. Мне было интересно наблюдать за летающим корабликом, было интересно ревьювить код других людей и видеть разницу в подходах новичков и опытных программистов.
Что любопытно, многие ученики пытались делать программы, которые делают больше, чем того требовало задание, при этом код у них напоминал месиво. Да и поведение программы оставляло желать лучшего. С другой стороны код людей с опытом отличался очень сильно. Их программы редко делали больше того, что требовалось в задании, но делали это хорошо, обрабатывали граничные условия, внештатные ситуации. Код был разбит на смысловые секции, функции оперировали понятиями одного уровня.
В начале весны 2012 я чётко осознал, что огромное количество необходимого и интересного мне материала никогда не будет переведено на русский язык, и для нормального понимания мне недостаточно знать ряд ключевых слов, а нужно вникать в язык серьёзно. Большое количество курсов по алгоритмам, AI, ML, ANN, NLP. Всё это хотелось посмотреть, попробовать, что-то применить, но сначала это нужно понять.
С с конца весны 2012 я активно занялся изучением английского языка. Аудиокурсы, фильмы, lingualeo. Осенью решил опробовать на практике. Результатом остался доволен. Материалы курсы понимал без больших проблем. Тут стоит сделать скидку на то, что материал давался весьма доступно и дикторы старались говорить чётко. Тем не менее первый положительный результат получен.
Особых надежд на расширение своих знаний python'а за счёт прохождения этого курса я не питал. Более того, я сомневался, что узнаю что-то новое о питоне вообще. Я хотел научиться пользоваться дистанционными курсами, взаимодействовать с другими студентами, посмотреть на разработку простых игр на практике. Ещё мне понравилась концепция версионируемых исходников на облаке. Довольно интересное решение для среды разработки.
Полученным результатом доволен, мне понравилась идея дистанционного обучения в удобное для меня время. Следующий курс - алгоритмы, надеюсь, что там всё будет также хорошо, и я снова получу 100 из 100.
Поздравлю себя с новым годом, подведу итоги и намечу куда двигаться в новом году.
В Vim можно вывести вертикальную черту, по которой видно границу, за которую залезать уже нельзя:
set colorcolumn=110
Нужно в тех случаях, когда в code style есть ограничения на длину строки.
Пока у меня не было времени следить за блогом, сюда прибежали спамеры и нафлудили в комментарии всякую гадость. Маяться сейчас с регистрацией у меня нет времени, вставлять более сложную капчу - жалко тех людей, которые всё же захотят что-то написать. Поэтому комментарии пока что отключаю.
Если кому-то нужно со мной связаться - пишите на почту, которая есть тут.
1 декабря 2011 года моя жизнь в очередной раз изменилась - я официально стал московским гастрабайтером.
Проработав чуть больше года в ростовском радичастотном, я регулярно стал получать предложения о смене работы. На тот момент мы с женой уже твёрдо решили, что переберёмся в Москву, но планировали сделать это весной. В октябре-ноябре я начал зондировать московский рынок работы. Подкорректировал резюме, поменял Ростов на Москву и стал ждать.
Предложения начали поступать довольно быстро (работы много, а работников мало). Одной из первых была компания Positive Technologies (их предложние я в последствии и принял).
Я не стал ждать весны, а набрав список приглашений на собеседование, поехал в Москву.
Первое собеседование - Positive Technologies, не столько из-за того, что они одни из первых на меня вышли, сколько меня привлекала возможность сменить предметную область с веба на что-то другое. По итогам собеседования, которое, как мне казалось, я провалил (и не зря), я получил предложение, с оговоркой, что мне нужно будет многому научиться (хы, напугали ёжика голой попой, я за этим в Москву и ехал).
Потом было ещё два собеседования в других компаниях, о которых я уже договорился (мне не хотелось их отменять). Одно сфейлил, одно прошёл и получил ещё один офер (более выгодный с денежно-плюшковой точки зрения).
Пребывыя в сомнениях, позвонил жене - посоветоваться, идти ли мне в PT. Ответ был прост: "Ну ты же хочешь". В тот момент решение было принято и я отказался от остальных приглашений на собеседования.
1 декабря я вышел на работу.
Теперь я много пишу на Python'e и совсем чуть-чуть на С++ (исчезающе мало). Разрабатываю систему скриптования для MaxPatrol. И мне это нравится.
После разработки прототипа менеджера задач, у меня появилось несколько идей, как сделать его более удобным и полезным. Перепробовал несколько других todo-листов, продумал реализацию нескольких возможностей, которые мне показались полезными. Но потом отбросил всё это. Причин тому несколько.
Для ведения списка задач по разработке какого-либо проекта я работаю в баг-трекинговой системе, которая, обычно, связана с системой контроля версий. Вести записи о проекте в ещё каком-то приложении - это прямой путь к потери информации о проекте.
Для управления своими задачами я использую телефон: календарь, будильник, органайзер, заметки. Мне этого хватает за глаза. Телефон всегда под рукой, напоминания по времени позволяют не держать в голове мелкие задачи (купить еду, оплатить хостинг, проверить сайт, позвонить другу или заказчику), заметки и qwerty-клавитура дают удобную возможность вносить записи, которые потом трансформируются в задачи (возможно, что и в issue для какого-нибудь проекта).
Поэтому taskforme развивать я не буду, потому что для меня он бесполезен.
Недавно понадобилось сделать выборку из базы данных с подсчётом уникальных значений в разных колонках. Зачем это было нужно - не скажу, потому что это внутренняя информация.
Итак, есть у меня таблица documents и таблица objects.
documents
id - primary key
number - string
objects
id - primary key
document_id - foreign key
f_input - integer
f_output - integer
Вот для полей f_input и f_output мне нужно было выдать количество уникальных значений для каждого документа.
select number, count(distinct f_input)
from (
select number, f_input
from documents
join objects on documents.id = objects.document_id
union all
select number, f_output
from documents
join objects on documents.id = objects.document_id
) as x
group by number
order by number
Не знаю, лучший ли это способ, но он работает, а в данный момент мне больше и не нужно.
Recent comments
35 weeks 23 hours ago
42 weeks 4 days ago
48 weeks 5 days ago
1 year 1 week ago
1 year 15 weeks ago
1 year 1 week ago
1 year 1 week ago
1 year 23 weeks ago
1 year 32 weeks ago
1 year 32 weeks ago