Есть здесь программисты-самоучки?

MarizzaMarizza

Есть ли на этом форуме люди, удовлетворяющие следующим критериям:
1) образование не техническое и тем более не связанное с ИТ - т.е. геологи, историки, химики и т.д., но не мехмат, ВМК, физфак.
2) самостоятельно изучили программирование
3) сейчас программирование - их основная профессия.
Поделитесь, пожалуйста, историями успеха. Особенно интересует первый этап - как нашли первую работу, поскольку это, кажется, самое сложное.
Вопрос связан с тем, что я не очень понимаю, как мне развиваться дальше. Вот основы Python я выучила, читаю Dive into Python, есть даже небольшое задание, но... хочется систематичней подойти к делу. Как предложите закреплять полученные знания? Решать задачки с сайтов? Сразу искать реальную работу? И, кстати, при каком уровне знаний уже можно начать искать работу Junior Developer? Реально ли найти такую первую работу удаленно?

uncle17

Меня на физфаке, например, практически не учили программизму, так что его тоже можно в первый критерий вписывать.
В конце 90-х начал рисовать разные варианты своей домашней странички, захотелось интерактива - прочитал что-то про JS. Устроился веб-мастером, в 2001 таких знаний вполне хватало. Пока сидел без задач, почитал про апач, пхп и mysql. Ну и с тех пор как-то само...

Dimon89

Ну, у меня жена с Филфака. Образование ни разу не техническое =) Первую работу нашла через знакомых, но постоянно самосовершенствуется, сейчас предложения работы сыплются пачками. JS.

pilot

> 1) образование не техническое и тем более не связанное с ИТ - т.е. геологи, историки, химики и т.д., но не мехмат, ВМК, физфак.
Мехмат никак не связан с ИТ. Я даже кафедру вычмата закончил, но никаких навыков программизма это не дало. (И это правильно).
> Вопрос связан с тем, что я не очень понимаю, как мне развиваться дальше. Вот основы Python я выучила, читаю Dive into Python, есть даже небольшое задание, но... хочется систематичней подойти к делу. Как предложите закреплять полученные знания? Решать задачки с сайтов? Сразу искать реальную работу? И, кстати, при каком уровне знаний уже можно начать искать работу Junior Developer? Реально ли найти такую первую работу удаленно?
Правильнее не решать задачки с сайтов, а сделать небольшой проектик самостоятельно. Придумай и сделай, если веб - вывеси на всеобщее обозрение.
Если такой проектик есть, есть доказанный интерес и прочитанная полностью документация (dive into python кстати не ахти книжка) — шансы на работу повышаются на порядок.

MarizzaMarizza

Я понимаю, что физфак практически не дает знаний по программированию, и мехмат тоже. Вопрос скорее в том, что если вы учитесь на техническом факультете, то, во-первых, наверняка будут друзья-программисты, а компанией учиться веселее, появляется момент с одной стороны взаимной поддержки, а с другой - соревнования. Кроме того, работодатели иначе относятся к выпускникам мехмата или физфака, чем к, прости-господи, биологам. Так что этим факультетам проще.
За советы спасибо. Что тогда посоветуешь читать?
Проектик ни фига не придумывается, в том-то и беда. Мне сложно генерировать новые идеи. :( Может, подключиться к какому-нибудь некоммерческому проекту?
UPD: хотя вот родилась мысль сделать онлайн сервис по статистической обработке научных даннных. Типа программы Statistica, только online

pilot

За советы спасибо. Что тогда посоветуешь читать?
Я читал книжку Р.Сузи на русском, но это было еще в школе.
Надо прикинуть в каком направлении хочешь развиваться и прочитать банально от корки до корки документацию.
Удивительно как мало разработчиков осиливают такую простую штуку.
Если веб - это документация по питону, джанге, джаваскрипту и jquery (например nginx.
> Вопрос скорее в том, что если вы учитесь на техническом факультете, то, во-первых, наверняка будут друзья-программисты, а компанией учиться веселее, появляется момент с одной стороны взаимной поддержки, а с другой - соревнования.
Курсеру смотрела? Там по питону и программированию курсов вагон и маленькая тележка, c capstone project в конце в случае специализации.
(Лично я учился самостоятельно).
UPD: хотя вот родилась мысль сделать онлайн сервис по статистической обработке научных даннных. Типа программы Statistica, только online

Такая сказка уже есть, даже на питоне. Найди как называется.

MarizzaMarizza

Ты про SciPy что ли? В том-то и дело, что благодаря наличию NumPy и SciPy написать такую ведь будет легко и в то же время я освою обе эти библиотеки + еще много всего. Или ты имеешь в виду, что такой сервис уже есть?

forvito

хотя вот родилась мысль сделать онлайн сервис по статистической обработке научных даннных. Типа программы Statistica, только online
^^ амбициозное начинание.
а если попробовать поделать задания с каких-нибудь курсов с курсеры например? Ну чтобы с чего-то начинать.

pilot

Ты про SciPy что ли? В том-то и дело, что благодаря наличию NumPy и SciPy написать такую ведь будет легко и в то же время я освою обе эти библиотеки + еще много всего. Или ты имеешь в виду, что такой сервис уже есть?
http://nbviewer.ipython.org/github/jvns/talks/blob/master/py...

Yulka-MOl

Есть 2 очевидных пути.
1. Открыть HH.ru и найти стажировку.
2. Открыть сайт для фрилансеров и найти интересный проект.

pilot

В мое время были такие проблемы:
1. Стажировок на питоне почти нет, они есть на быдлокодерских языках в основном.
2. Проекты на фрилансе убогие, полезного опыта 0, без опыта будешь настройки вебсервера в основном подкручивать.

MarizzaMarizza

а если попробовать поделать задания с каких-нибудь курсов с курсеры например? Ну чтобы с чего-то начинать.
Я пока не смотрела курсеру и не знаю, что там за задания. Но прошла курсы на stepic.org и codeacademy + неинтерактивный курс по ООП на Python. Ну то есть задачки уровня примерно как эта решать умею. Теперь хотелось бы чего-то посерьезней, а на курсере, подозреваю, задачи примерно такие.

pilot

Я бы еще походил на всякие мероприятия, питоньи и не очень, типа всяких hackday.

forvito

а на курсере, подозреваю, задачи примерно такие.
сильно зависит от курса.
есть вот такая специализация http://www.coursera.org/specialization/fundamentalscomputin... там даже в первых курсах каждую неделю мини-проект по 200-400 строк кода. Это не то чтобы настоящий проект, но это намного более самостоятельные штуки, чем в кодакадеми.

MarizzaMarizza

Хорошо, спасибо.

doublemother

1) образование не техническое и тем более не связанное с ИТ - т.е. геологи, историки, химики и т.д., но не мехмат, ВМК, физфак.
У меня после химфака сложилось ощущение, что на физфаке ведут много программерских курсов для чайников, включая непонятно зачем нужные физикам C++ и ораклы, а на химфаке половина просто прогает в силу жизненной необходимости.
На первую работу устраивался на позицию «ищем студентов за копейки», будучи, понятно, студентом.

lord2476

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

Maurog

удовлетворяющие следующим критериям
забыли важный пункт:
4. пол Ж
:grin:
техническое образование лишь намекает на то, что у человека технический склад ума, что очень пригождается в программинге имхо
по поводу советов:
1) готовимся к собеседке
2) устраиваемся на работу, там учимся

kill-still

включая непонятно зачем нужные физикам C++ и ораклы
Есть целый раздел, занимающийся этим.
http://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%87%D0%B8%D1%81...

khachin

  Поделюсь своей историей.
  Образование геологическое. Легко давалась дисциплина по ГИСам (те, что геоинформационные системы) и программа ArcView, которая содержала встроенный язык Avenue. Согруппникам ГИСы не давались, из-за чего по этому направлению в разные геологические конторы в основном рекомендовали меня. Хотя я тогда и с трудом понимал, почему до атрибутов векторных объектов я добирался через точки (типа polyline.GetPoints[0].GetCoordinates.GetX).
  В дальнейшем компания ESRI отказалась от Avenue и перешла на Python. Стал изучать его по встроенной справке.
  Также пакеты ArcGIS (новое название продуктов ESRI) помимо обычных shape-файлов стали использовать базы данных. Пришлось почитать книжку по атомарности, согласованности и прочей кухне. Научился создавать и "дропать" таблицы, писать "селекты" и "джоины".
  Один из пакетов делал html-страницу с картами. Стал не в обязательном порядке изучать html. В основном по htmlbook.ru
  Во время безделия познакомился с SQLAlchemy (фреймворк на Python, работающий с разными БД) и понятием ORM.
  В свободное время в качестве игры придумывал объектно-ориентированные задачки. Мол, есть отель, номера, посетители... Они имеют свойства и взаимодействуют. Создавал формы, заполнял, генерировал сводные таблицы. Для себя решил, что обращаться к атрибутам объектов в ORM для меня проще, чем писать "селекты" к столбцам. Поэтому по большей части работаю с Python и SQLAlchemy.
  В результате моих самоучений сегодня в конторе имеем интранет с картами полевых объектов, которые показывают в html еженедельно обновляемый полевой прогресс. Плюс генерируется часть данных для ежеквартальной отчетности. Разные отделы вместо передачи экселя на флешках стали пользоваться централизованной базой. Не нужная для отдела информация не показывается.
  Работы еще предстоит много, но по сравнению с тем, что было в конторе год назад текущий результат не может меня не радовать.
  Как выпустился, так и работаю в геологии: разведка на твердые и горючие полезные ископаемые. Два принципиально разных направления, но одно я освоил в процессе обучения и нескольких полевых выездов, со вторым много работал после выпуска. Был период, когда брал длительный отпуск без сохранения зарплаты и участвовал в мелких "стартапах" (если так можно назвать интернет-магазины для ИП после чего вернулся.
  9 из 12 месяцев основная деятельность — программирование (и — представь себе — на Python'е иногда (когда появляются новые полевые объекты) строю карты в ГИСах. Пара месяцев — выезд в поля на объекты.
  Другие языки: C++ изучали один семестр 2 пары в неделю, писали на парах консольные приложения, на этом моё знакомство с ним и закончилось. С# — 1 семестр по второй вышке (заочное дистанционное — не доучился написал даже пару приложений Windows Form (одно для сейсморазведочного материала, одно — для ультразвукового анализа пород). Lua — время от времени использую для своих нужд. Но в основном сижу на Python. Он и внутри ГИСов используется, и в базу может залезть, и динамические html-страницы может сгенерировать. А, ну да, JavaScript забыл, куда же в клиентской динамике без него — в основном использую MooTools, в чистом виде на js пишу довольно редко.
  При этом я не знаком со всякими N, K, O, A, 1, кокю и прочими терминами.

stm5872449

Реально ли найти такую первую работу удаленно?
Вот на это желание имо придется забить.

pilot

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

svetaslav212

1) образование не техническое и тем более не связанное с ИТ - т.е. геологи, историки, химики и т.д., но не мехмат, ВМК, физфак.
2) самостоятельно изучили программирование
3) сейчас программирование - их основная профессия.
1 2) Думаю в мэхау химикам и физикам программирование преподают примерно одинаково. На ХФ есть группы с углубленным программированием, например.
3) Химиков-прогеров навалом даже не из упомянутых выше групп.

MarizzaMarizza

Круто, спасибо! :)

MarizzaMarizza

Хорошо, тогда химиков тоже не берем.

Dasar

я не очень понимаю, как мне развиваться дальше
Повторяй вещи, которые тебя окружают: форум, интернет-магазин, блог и т.д. Любой сайт или программу, которые тебе глянулись.
Сначала из крупных готовых движков приблизительно, затем отдельные моменты более точно.
Начать лучше с интернет-магазинов, как более монетизируемой темы.
Желательно сразу одновременно внедрять и управление процессом:
- смотришь на сайт - пишешь мини-требования на основе него
- требования переводишь в необходимые задачи
- необходимые задачи сводишь в план
- оцениваешь пункты плана по срокам
- двигаешься по плану
- после выполнения переосмысляешь: разбираясь где план не сошелся с фактом, подтягивая план к факту - развивая прогнозирование, и подтягиваешь факт к плану - стараясь выкидывать при исполнении те моменты, на которых залипаешь.
ps
Повторение уже существующих вещей:
- во-первых, переносит размышления с "что-то надо придумать" на овладевание техникой
- во-первых, задает объективный критерий - насколько хорошо получается

MarizzaMarizza

Спасибо, отличный совет!

Dasar

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

Kira

в школе прогал на паскакале, даже на олимпиады ездил, хотя на всеросах ничо не занял. Потом учёба на ММ (ничего в плане computer science там нет потом лет 6-7 журналистом пиарщиком, потом как с прессой в стране стало хуёво вернулся в программирование.
Короче: фриланс рулит. Если ты ответственная, то у тебя сильная мотивация доделать взятый проект (рейтинг на биржах и бабло). Питон конечно не пых, но достаточно быдлокодерский и задачек лёгкого уровня "почти курсач" хватает, можно плавненько эволюционировать. Заодно постепенно посмотришь на хороший/плохой код и выяснишь чем тебе больше нравится заниматься.
главное потом с фриланса вовремя спрыгунть.

kill-still

потом лет 6-7 журналистом пиарщиком
Там ориентация в проф. навыки входит поди? :grin:

MarizzaMarizza

Спасибо, тоже хороший совет.

nats

 Геофизик, закончил геологический факультет. Был у меня период в жизни, когда программирование было основным заработком. Получал по нашим меркам среднюю ЗП. Пишу на C#. Максимальный результат - это одна официально зарегистрированная программа для ЭВМ, написанная под руководством преподавателя. С него матчасть, с меня интерфейс и модернизация, а также урезание опций матчасти, которые не попадали под его авторство. Для того времени получилось очень даже неплохо, но не шедевр.
 Заработок непостоянный и требующий держать нос по ветру. Лучше всего, когда тебя советуют и к тебе отправляют те кому когда-то помог или удружил. Программировал (-ую) в основном только вокруг того, что непосредственно касалось(-ется) моей специальности. Чаще всего (к какому-нибудь отчёту) срочно требуется перегнать массив данных из одного формата в какой-нибудь специфический. Очень надо, очень срочно и по началу (пока тебя мало кто знает) - недорого.
 Из плюсов:
 1. Задание получаешь от человека своей специальности и ты, как правило, представляешь, что ему нужно, а также как это сделать.
 2. Пишешь дома, график работы свободный (иногда это очень большой минус :) )
 Из минусов: не хватает базовых знаний, особенно вычмата. Приходилось отказываться от заманчивых проектов по причине то, что не был уверен, в том, что разрюхаю требующуюся математику и успею к дедлайну.
 Сейчас до сих пор что-то пишу, но в основном это небольшие утилитки, которые упрощают мою работу и освобождают время для охоты, рыбалки и более приятных вещей чем скучный, цикличный и однообразный труд.
 
Как предложите закреплять полученные знания?

Лучше сразу влезть в какой-нибудь проект с далёким дедлайном и в какую-нибудь команду. В процессе реальной работы появятся первые наработки, которые в будущем пригодятся. Заодно приобретёте навык чтения (и понимания) чужого кода, а также узнаете о себе много нового. :)
 
Реально ли найти такую первую работу удаленно?

Да.

MarizzaMarizza

Спасибо за ответ!
И всем прочим ответившим тоже.
А за сколько времени реально выботать проганье до того уровня, когда уже можно начинать искать работу? Допустим что я занимаюсь по 2 часа в день.
Просто есть опасение увязнуть в вечной учебе и так и не дойти до практики.

doublemother

Зависит от личных навыков и бэкграунда. Редко когда хотят "чисто проганье" — основы для прохождения такого собеседования в не слишком крупную контору можно заботать за неделю-месяц.
Но при этом чаще всего хотят ещё что-нибудь типа "начальные навыки html-вёрстки", "знание controllable query sql", "опыт работы с XXX". Тут уже надо смотреть, какие и сколько именно смежных технологий хотят и курить их.

MarizzaMarizza

Спасибо!

SCIF32

Хочешь придумаю тебе задание?
Есть наш форум. Надо написать:
1) питонячий скрипт, который выкачивает списки:
- топ-500 заплюсованных пользователей
- топ-500 заминусованных пользователей
Парсит username-ы и кладет в файл.
2) питонячий скрипт, который выкачивает странички с рейтингами:
http : // forumlocal.ru/ratingdetails.php?username=<username>&full_users=1&showlite=
И парсит их, выделяя инфу о том кто кому поставил сколько оценок (и плюсов и минусов) и кладет в файл.
3) Питонячий скрипт, который берет топ 100 пользователей поставивших больше всех оценок и кладет их в файл.
4) Ты руками помечаешь кто из них мальчик, а кто девочка.
5) Питонячий скрипт, который по предыдущим файлам для каждого пользователя находит любимчика противоположного пола (кому суммарная оценка выше) и записывает файл с двунаправленным графом в формате graphviz-а.
6) Запускаешь graphviz-овский neato, делаешь картинку с никами и прикладываешь постом в этом треде. А мы все получаем граф интимных связей форумчан.
Напиши:
- что из задания ты представляешь, как сделать?
- что из задания ты представляешь, как загуглить?
- какую часть задания вообще не поняла как подступиться?
- сколько времени у тебя может занять выполнение этого задания в худшем случае? в лучшем случае?

Monstrodamus

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

SCIF32

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

MarizzaMarizza

Спасибо!
Я сейчас вся в разъездах, в спокойной обстановке внимательно изучу задание и отвечу.
Основы парсинга html-документов читала, но насколько задание мне по силам, пока сказать не готова.

Julaeff

Меня на физфаке, например, практически не учили программизму, так что его тоже можно в первый критерий вписывать.
У меня из 8 семестров обучения на фф 7 семестров было программирование.

uncle17

Поколение ЕГЭ, видимо, даже за 7 семестров не может освоить...

Julaeff

Те общие курсы, что были первые 4 семестра сложно назвать нормальным программированием, а вот последние три, спецкурсы - там были полезные вещи.

Sveta84

Какая кафедра и чему учили?

Julaeff

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

uncle17

cuda-C
А, ну извините. Технологии шагнули. В мое время был 3dfx Voodoo максимум

PooH

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

marat7256

В тред призывается Шурик!

6yrop

самые сложные задачи - проектирование архитектуры, формализация требований и построение устойчивого кода (ошибки на изменения)
Это вам так трудно, потому что мучаетесь на js. Возьмите нормальный язык, и ваши архитектурные страдания уйдут, будете комфортно код писать и все тобой перечисленной вместе.
P.S. Конечно, находятся любители пострадать и на хорошем языке.

stm5872449

В тред призывается Шурик!
Демон.

borec

И какие архитектурные проблемы у js?

6yrop

И какие архитектурные проблемы у js?
Те, на которые жалуется .

borec

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

6yrop

на C# нет проблем с "формализация требований и построение устойчивого кода". Развитие проекта и общение с заказчиком идет в приятном комфортном стиле.

6yrop

Подгорает, минусы ставят, я сказать нечего. :grin: :p

stm5872449

Почему идиоматичный C# такой медленный.

6yrop

C# такой медленный.
я не видел медленный C#. Для начала надо его показать. Потом рассуждать.

kill-still

Бл* ну вот делать тебе нечего было - лихо поминать! :facepalm:

6yrop

вот у вас подгорает на тему C#

Dasar

Почему идиоматичный C# такой медленный.
Конструктивный ответ требует больших затрат. Автор не привел тесты, которые измеряют эту медлительность.

kokoc88

Конструктивный ответ требует больших затрат. Автор не привел тесты, которые измеряют эту медлительность.
Из языков верхнего уровня C# - один из самых быстрых. Надо только помнить о том, что для выполнения вычислительных задач на нескольких ядрах нужно включить gcServer. Забавно видеть чьи-то тесты, в которых эта опция отключена и результаты сравнимы с работой на одном ядре.
Кроме этого я бы добавил возможность генерировать байткод в рантайме с помощью Linq.Expressions Генерация кода позволяет улучшить производительность вычислительных задач во многих случаях.

MarizzaMarizza

Хочешь придумаю тебе задание?Есть наш форум. Надо написать:
1) питонячий скрипт, который выкачивает списки:- топ-500 заплюсованных пользователей топ-500 заминусованных пользователей username-ы и кладет в файл.
2) питонячий скрипт, который выкачивает странички с рейтингами:http : // forumlocal.ru/ratingdetails.php?username=<username>&full_users=1&showlite=И парсит их, выделяя инфу о том кто кому поставил сколько оценок (и плюсов и минусов) и кладет в файл.
3) Питонячий скрипт, который берет топ 100 пользователей поставивших больше всех оценок и кладет их в файл.
4) Ты руками помечаешь кто из них мальчик, а кто девочка.

До четвертого пункта представляю, как делать. Единственное, пока не знаю, откуда брать список пользователей - в UserList много всякого шлака. Все пользователи нужны или только активные?
По третьему пункту - больше всего оценок вообще или больше всего оценок данному пользователю (как Бровер когда-то выкладывал)?
5) Питонячий скрипт, который по предыдущим файлам для каждого пользователя находит любимчика противоположного пола (кому суммарная оценка выше) и записывает файл с двунаправленным графом в формате graphviz-а.
6) Запускаешь graphviz-овский neato, делаешь картинку с никами и прикладываешь постом в этом треде. А мы все получаем граф интимных связей форумчан.Напиши: - что из задания ты представляешь, как сделать?- что из задания ты представляешь, как загуглить?- какую часть задания вообще не поняла как подступиться?- сколько времени у тебя может занять выполнение этого задания в худшем случае? в лучшем случае?
С graphviz дела вообще не имела, нужно долго разбираться.
По времени боюсь что-либо предполагать, когда хоть часть напишу - станет более понятно.

Dimon89

С graphviz дела вообще не имела, нужно долго разбираться.
Там формат простой как три копейки, за час-два разберешься с нуля. Мне в свое время для похожей по сложности задачи хватило 10 минут документации.

SCIF32

Единственное, пока не знаю, откуда брать список пользователей - в UserList много всякого шлака. Все пользователи нужны или только активные?
топ-500 заплюсованных
топ-500 заминусованных
вот ссылки списка пользователей с сортировкой по рейтингу, в принципе они и выше были:
https:/ /forumlocal.ru/showmembers.php?Cat=&sb=12
https:/ /forumlocal.ru/showmembers.php?Cat=&sb=11
По третьему пункту - больше всего оценок вообще или больше всего оценок данному пользователю (как Бровер когда-то выкладывал)?
просто больше всего оценок в сумме
С graphviz дела вообще не имела, нужно долго разбираться.
скачать
http://www.graphviz.org/Download.php
примеры графов (там если тыкаешь, то показывает код графа):
http://www.graphviz.org/Gallery.php
запускать для этого задания:
neato -Tpng -o links.png <имя файла c графом>

PooH

Это вам так трудно, потому что мучаетесь на js.
я уже года три как на плюсах.
какой-то особой разницы с точки зрения организации разработки и построения архитектуры (кроме некоторых тонкостей) между js и c++ не вижу

6yrop

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

PooH

на c++ тоже навигация по элементам кода слабовата
студия иногда не показывает определение метода для конкретного объекта (особенно тяжело с виртуальными функциями) и плохо ищет конкретные шаблоны
find usages работает прекрасно, хотя много ложно-положительных
но я уже привык и не замечаю эти вещи

MarizzaMarizza

Первый пункт сделала.
Второй тоже проблем вызвать не должен.
Третий тоже.
Четвертый мне делать лень. Не программистское это дело :p
Дальше пока не смотрела.

Dasar

Первый пункт сделала.
Код показывай! :grin:

MarizzaMarizza

Вы ж тапками закидаете.
Хотя ладно. Закидывайте...
# -*- coding: cp1251 -*-
__author__ = ''


import urllib.request
from html.parser import HTMLParser
import sys
import io

class My_HTMLParser(HTMLParser):
'''Parser to parce HTML files. Gets table content between CODE LOOP and
END OF LOOP comments.'''
def __init__(self):
super.__init__
self.users = False #This variable is flag to start data parcing

def handle_endtag(self, tag):
'''Separate srtings as they were in table.'''
if tag == 'tr' and self.users == True:
print

def handle_comment(self,data):
'''Code between these comments is our data.'''
if 'CODE LOOP' in data:
self.users = True
if 'END OF LOOP' in data:
self.users = False

def handle_data(self, data):
'''Print cell content.'''
if not data.isspace and self.users == True:
print (data.strip end = '\t')

link = 'http://forumlocal.ru/showmembers.php?Cat=&sb=12&page='
parser = My_HTMLParser

parced_data = io.StringIO #Use StringIO object to store raw data
old_stdout = sys.stdout
sys.stdout = parced_data
for counter in range(1,21): #This loop parces data of all 20 pages
new_link = link + str(counter)
my_source = urllib.request.urlopen(new_link).read
my_data = my_source.decode('cp1251')
parser.feed(my_data)
parser.reset

sys.stdout = old_stdout

my_file = open ('userlist_high_rating.txt', 'w')
strings_in_table = parced_data.getvalue.split('\n') #Get data from StringIO and put it to array of strings
for line in strings_in_table: #Split every line by tabulations and write the first element to the file
str_ar = line.split('\t')
my_file.write(str_ar[0]+'\n')
my_file.close
parced_data.close

print('OK!')

Dasar

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

Dasar

sys.stdout = parced_data
Стоит переписать код так, чтобы stdout не использовался для передачи данных между двумя частями программы.
Текущее решение здорово ухудшает повторное использование кода и комбинируемость кода. И нарушает два правила:
- не использовать глобальных переменных без необходимости
- избегать неявных передач данных
Одно из простых решений: явно передать parced_data в My_HTMLParser и печатать в него.

val63


Четвертый мне делать лень. Не программистское это дело :p
Когда перестанешь так думать, станешь программистом

MarizzaMarizza

ОК, попробую. Спасибо.
UPD: подскажите, как перенаправить печать в файл?
Про то, что можно сделать print('my_str', file = 'untitled.txt') я знаю.
Но в моем коде (выше) менять функции в классе My_HTMLParser не хочется - хотелось бы, чтобы он просто печатал, а печать эту перенаправлять уже при вызове parser.feed. Надеюсь, понятно объяснила...

Maurog

Parser to parce
суслика видишь? :grin:

MarizzaMarizza

Скажите, а "я тупая и иначе не умею" - является достаточно серьезным основанием, чтобы менять системные переменные?

Andbar

self.users == True
логический тип придумали не за тем, чтобы его сравнивать в условии

Dasar

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

parser.output = sys.stdout
parser.feed(my_data)
parser.reset

parser.output = my_file
parser.feed(my_data)
parser.reset

Dasar

менять функции в классе My_HTMLParser не хочется - хотелось бы, чтобы он просто печатал
1. Определись, что делает My_HTMLParser и дай ему смысловое имя. Это структурирует код и твои мысли по поводу него.
Возможны два варианта:
a) UsersTable_HtmlParser - этот код парсит только конкретную таблицу, и тогда если необходимо распарсить другую таблицу, то пишется другой класс
b) Table_HtmlParser - класс парсит произвольную таблицу, и может использоваться для любой страницы.
Второй вариант предпочтительнее, но чуть сложнее.
2. Раздели My_HTMLParser и печать.
Сделай так, чтобы My_HTMLParser помещал данные в коллекцию, а не в файл.
Это ускорить программу (уйдут преобразования в файл и обратно) и повысит ясность кода.

MarizzaMarizza

Спасибо, учту.
Помогите, плиз, разобраться с кодировками в url.
Есть вот такой кусок кода:
 
 # -*- coding: cp1251 -*-
from urllib.parse import quote, urlsplit, urlunsplit
import urllib.request

url = (сюда я вставляю какой-то url)

parts[0] = quote(parts[0], safe=':/?=&')
parts[1] = parts[1].encode('idna').decode('ascii')
parts[2] = quote(parts[2], safe=':/=?&')
parts[3] = quote(parts[3], safe=':/=?&')
parts[4] = quote(parts[4], safe=':/=?&')

url = urlunsplit(parts)
print(url)

Так вот, если я в качестве url использую, например, "http://секс.рф/тв-каналы/секс_и_здоровье/", то на выходе получаю значение "http://xn--e1aktc.xn--p1ai/%D1%82%D0%B2-%D0%BA%D0%B0%D0%BD%D0%B0%D0%BB%D1%8B/%D1%81%D0%B5%D0%BA%D1%81_%D0%B8_%D0%B7%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%D1%8C%D0%B5/" - замечательно работающая ссылка.
А если я беру "http://forumlocal.ru/ratingdetails.php?username=Гулька&full_users=1&showlite=", то получаю "http://forumlocal.ru/ratingdetails.php?username=%D0%93%D1%83%D0%BB%D1%8C%D0%BA%D0%B0&full_users=1&showlite=" и вместо рейтинга Гульки получаю сообщение о том, что
 
We could not find a profile for the Username 'Гулька'

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

YUAL

http://github.com/mr-tron/forumlocal-json-api/blob/master/p...
парсер форума под питон3. тренировался тоже на нике "Гулька".
тебя интересуют строки 4 и 45.

MarizzaMarizza

Ааааа, сработало! Спасибо!

istran

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

serg13

Плюсуюсь к программистам-самоучкам.
1) Химфак+аспер+защита дисера.
2) Прогать начала после аспера (удивительно, как мне это раньше в голову не приходило)
3) Через год была первая подвально-сайтостроительная работа. Ещё через 9 месяцев - пиар-агенство, отдел web-разработки, где удалось влезть в проекты на java, ещё через год ушла в банк как java-прогер.
Сейчас правда уволилась, работаю удаленно, и пока снова на php + не уверена, что захочу возвращаться на full-time прогером, ибо сидячая работа по 8 часов перед компом - это жесть.
Считаю, что в любом случае не потеряла время зря, старую профессию тоже не забрасываю - поддерживаю форму репетиторством, а там посмотрим как сложится.
4) Пол Ж.
Как училась:
а) самостоятельно верстала все подряд и решала задачки по js c learn.javascript.ru.
б) попыталась замутить самописный велосипед на php, велосипед до конца не довела, и быстро потеряла к нему интерес, но этого хватило чтобы было что показать на собесе
в) далее уже на работе осваивала все остальное, временами впадая в панику при необходимости настроить сервак)
г) заботала пару умных книжек по С и С++ для лучшего понимания что такое прогерство вообще и создания фундамента, решала учебные задачки из них
д) едва придя в пиар-контору, подключила умную книжку по java + курс по алгоритмам на coursera в качестве практики (он как раз на java сдавался). Сама java после С++ осваивалась очень легко, и даже казалась какой-то 'несерьезной'
е) от обилия технологий javaEE был очередной культурный шок, на каждый вопрос 'что это такое' узнавала 10 новых терминов, но через пару месяцев освоилась и обнаглела
ж) много приставала к друзьям-прогерам на тему 'а как идеологически правильно сделать то-то и то-то'.
з) рассматривала любую работу, в т.ч. бесплатное выполнение тестового задания, как возможность потренироваться. Да, все мы мечтаем о высоком, но даже делая сайт по продаже виагры на php, можно узнать что-то полезное и добавить опыта в свою копилку.

MarizzaMarizza

Вот это тру-история успеха просто :D
Спасибо за рассказ. Надеюсь, что у меня тоже получится.
Сложно ли искать работу удаленно? Я полностью разделяю твое нежелание возвращаться в офис.
ЗЫ: 1000 файлов с рейтингами уже есть :o На следующей неделе обсчитаю и выделю 100 самых активных оценщиков... Код пока не буду выкладывать, может, я там еще чего исправлю

istran

1000 файлов с рейтингами уже есть
Я бы на твоем месте sqlite базу создал и туда бы сохранял все данные. См. http://docs.python.org/2/library/sqlite3.html
С БД будет проще всякие штуки считать потом.

MarizzaMarizza

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

serg13

Сложно ли искать работу удаленно?
Не сложно: fl.ru и weblancer.net к вашим услугам. Сложно искать хорошо оплачиваемую удаленную работу. За копейки все готовы тебя поюзать. Меня текущий уровень оплаты прямо скажем не полностью устраивает, репетиторство пока в 2-3 раза выгоднее.

elena-kotenok75

на odesk не пробовала?

serg13

на odesk не пробовала?
Пока нет, но на перспективу держу в уме.

MarizzaMarizza

Граф связей форумчан построен, наслаждайтесь:
линк для просмотра и скачивания
Распределение полов в топ-100 оказалось очень неравномерным: 14 к 86. Главным любимцем женской части форума оказался kobold - судя по всему, тайные чувства к нему испытывают аж 5 форумчанок. Следующим с большим отрывом следует Prof - он является объектом страсти двоих. Остальные в лучшем случае удостоились внимание одной барышни. Ну и нарисовались три пары: Reily-kobold, Mirra-Troop и love_sun-Pase4nik.
Код выложу попозже.

pilot

Можешь на основании рейтинга вычислить либерастов и ватников?

YUAL

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

Kira


Не сложно: fl.ru и weblancer.net к вашим услугам. Сложно искать хорошо оплачиваемую удаленную работу. За копейки все готовы тебя поюзать. Меня текущий уровень оплаты прямо скажем не полностью устраивает, репетиторство пока в 2-3 раза выгоднее.

из всех русскоязычных фрилансерских сайтов меня больше всего по деньгам и удобству работы радовал freelance.ru. weblancer скорее украинский (что влияет на цены там). Хотя лично мне из всего xussr было приятнее всего работать с хохлами: от туда мне попадались в основном только мегаадекватные няшки.

luna89

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

YUAL

лучше вычислялку ботов на основе анализа лексики, пунктуации, объема и частоты постов.
наконец мы узнаем являются ли and21chuv и альбир одним и тем же человеком.

svetaslav212

Да ты заебал.

nemec2707

Главным любимцем женской части форума оказался kobold - судя по всему, тайные чувства к нему испытывают аж 5 форумчанок.
Так себе аналитика.
Он же просто непрерывно клоуничает, а те, кого еще не заебало, - плюсуют, в том числе форумчанки

SergeRRRRRR

у тебя какое-то обострение по ходу. Нервишки шалят?

nemec2707

што

MarizzaMarizza

Не, вот к какому-либо анализу лексики я не готова, у меня математического бэкграунда на это не хватит.
Оставить комментарий
Имя или ник:
Комментарий: