Ответы пользователя по тегу Программирование
  • Как у вас организована командная работа?

    ProgramCodePav
    @ProgramCodePav
    Front-end developer. Love open source
    Используем BitBucket + Trello + Google Docs (основные доки по проектам, макеты, схема бд и все такое - очень удобно) + Telegram (когда онлайн, значит работаешь).

    Раньше был документ на Google Docs в формате экселя. К нему были подключены формы, которые заполнял каждый разраб в конце работы с оценкой своей деятельности и кратким описанием какие таски делал, какие проблемы были, да и вообще пишет, что считает нужным. При входе в документ срабатывает скрипт, написанный на basic внутри гуглоЭкселя (макрос это называется вроде), который все данные (оценки и никнеймы) формирует и составляет график продуктивности. Сейчас это неактуально, т.к. команда уменьшилась ) но работало неплохо. Такой вот забавный велосипед
    Ответ написан
    1 комментарий
  • Можно ли развернуть веб-приложения в локальной сети?

    ProgramCodePav
    @ProgramCodePav
    Front-end developer. Love open source
    Сам еще не работал с этим, но читал о sqlite - встраиваемой СУБД. Думаю, эта статья для вас
    habrahabr.ru/post/56694

    Если в рамках локальной сети, то можете установить denwer или подобный веб-сервер, для эмуляции на локальном пк (который как сервер).

    А еще на пк-сервере может быть C#-приложение, которое работает с sqlite (то есть сервер), а на других пк - клиенты.
    Ответ написан
    5 комментариев
  • Программирование с нуля. Как начать?

    ProgramCodePav
    @ProgramCodePav
    Front-end developer. Love open source
    Привет. Вы уже успели понять, что главное - желание. Но если и учиться (а это скучно), то надо заниматься максимально классными для вас вещами. Не менее важно видеть результат, поэтому лучше несколько маленьких проектов, чем один большой, который не закончите. Ответ на необходимость строго типизированного языка - да.

    Суть:
    Вам надо сначала изучить логику работы ЯП (pascal, на первых порах и C++ сойдет), потом уже браться за ООП (object pascal, C++, C#, Java и многие другие). А также рулит опыт. Сколько бы вы книг не вычитали, решает опыт. Читайте и пишите код. Устали читать, пишите код. Напишите программу на свой день рождения. Напишите программы для решения типовых задач (если учитесь) и не парьтесь с домашкой :)

    По делу. Я начинал также с паскаля, потом делфи (object pascal)... куча технологий и языков. Пришел к Java Android.

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

    А теперь надо ответить на вопрос: Сколько у вас есть времени и каким бы вы хотели быть программистом (хорошим, лучшим или как хобби)?

    Если у вас много времени, терпения и желание стать лучшим, то надо изучать с нуля:
    pascal (не полностью, а просто научиться решать стандартный перечень задач - работа с массивами, вычисления выражений, работа с файлами, работа со структурами данных - так проще).
    В принципе это займет недели 2, если стараться. Дальше у вас уже будет понимание логики языка. Можно садиться на более сложные (c#/java советую, c/с++ интересные, но сложнее).

    Если у вас времени в обрез или вы хотите просто начать уже сейчас, то советую начать изучать Java. Имхо, Java - один из самых легких из продвинутых ЯП (посмотрите книгу Head First Java).

    Если смотреть издалека, то Pascal я советовал только потому, что он очень простой и функциональный... Он как раз помогает понять типы данных, важность соблюдения границ массива, а структуры данных позволяют работать почти как с ООП языками (типа Java/C++/C#/etc.). Однако всего немногим сложнее будет изучение java, благодаря книжке Head First Java - она отлично составлена, с рисунками, стрелочками и забита аналогиями, а минусом здесь является бросание в пекло (в ООП), где всякие непонятные классы и т.д., отвлекающее от самой основы логики программирования.

    По языкам. (не особо слежу, скажу по своим ощущениям)
    Сейчас особенно выезжают две сферы на рынке - мобильная разработка и веб-разработка (для сервера).
    Справляются с этими задачами круто Java, .net C#, C++.
    Java - львиная доля разработки под Android, Один из популярнейших языков для серверного программирования, big data и других вычислений, иные разработки.
    C# - самый активный конкурент в серверном программировании для Java, разработка под winphone, windows с прямочками от MS (ведь C# разрабатывает MS).
    С++ - везде, но в основном применяется для системного программирования, драйверов и участков программ, где нужна большая скорость выполнения программы (поисковые движки, обработка голоса). Мне он нравится больше всех, но это для себя) На этом языке сложнее всего научиться, но с некоторым опытом работы (2-3 года) можно пройти в топовые конторы.

    ------------
    Честно говоря, мне очень помогали знания курсов Архитектуры ЭВМ и алгоритмов в изучении. Это не обязательно, но очень интересно )

    Итог:
    Если хотите вытоптанный путь, но немного более долгий - начинайте с pascal и потом садитесь на java/C#. Такой путь не требует особых знаний, кроме самих языков (в отличии от С++, где нужны базовые знания о работе компьютера).
    Если вы сообразительный и сильный (умеете мотивироваться и добиваться), то начинайте сразу с java. Сложно будет первые пара программ. Гугл сделает их за вас, но вообще это очень легкий язык.
    С++ - не знаю. Многие советуют с него начинать. Вообще, он довольно простой и структурный в начале, усложняется довольно быстро, но логично. Хороший язык, но его проблема для новичков - нужно учитывать очень много нюансов.

    Кстати, у java есть небольшой плюс - javarush.ru. Интересный проект) фремиум, но бесплатно можно пройти уровней 10-15, это, по сути, позволит познакомиться с языком.
    PS: если вы не решились, начинайте любое. Начните сложные, простые языки, поделайте, поломайте. Это правда поможет. Пробуйте, изобретайте свое.
    Что-то я затянуто написал... ночь.:)

    Успехов!
    Ответ написан
    Комментировать
  • Придумал настольную игру, какой посоветуете алгоритм для соперника-бота?

    ProgramCodePav
    @ProgramCodePav
    Front-end developer. Love open source
    Есть просто идея:)

    Можно сделать заранее много наиболее эффективных (или по сложности) семлов. А также бот будет записывать каждый примененный семпл в файл. На основе данных файла может быть осуществлен алгоритм псевдохитрости соперника. Например, 3 раза один семпл (или похожие) работают, а в четвертый раз самый страшный семпл для игрока, который подстроится под предыдущие 3 варианта. Также для одного из 5 вариантов бота можно сделать случайным. Это все для первого шага.

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

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

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

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

    Второй этап:
    После оценки всех горизонталей можно резко выдвинуть в положительные стороны все варианты ответов (например, 5 точек варианта 1, все до края - влево, вправо, влево, влево, влево - это на основе анализа результатов первого этапа, а 5 точек варианта 2 - тоже самое, что у варианта 1, но деленное на 2).

    Третий этап: (fail)
    совмещать варианты 1 и 2 по шагам.
    например, вариант 1 выиграл более, чем вариант 2.
    Напомню расположение варианта 1 (от центра): влево, вправо, влево, влево, влево .
    А это расположение варианта 2 (от центра): влево/2, вправо/2, влево/2, влево/2, влево/2 .
    Значит первая (верхняя) горизонталь варианта 2 двигается влево на расстояние влево/4 (то есть на клетку). Если Ва... тут я сломался:) потому что возвращаемые данные не цифры, а bool. ( я додумать его попробую, просто дам ответ лучше по-раньше, вдруг вы поймаете направление и справитесь лучше )

    -----------

    Еще один алгоритм: последовательный.

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

    Отличие в том, что если исследует карту вариант 2, то вариант 1 становится на выигрышную точку вместе с вариантом 2.

    например:
    Расположение всех точек, шаг 1:
    Вариант 1 <=> вариант 2
    Центр <=> Центр+1клетка вправо
    Центр <=> Центр
    Центр <=> Центр
    Центр <=> Центр
    Центр <=> Центр

    Вариант 2 выиграл. Значит в первой горизонтали стандартной точкой становится Центр+1клетка вправо. То есть:
    Расположение всех точек, шаг 2:
    Вариант 1 <=> вариант 2
    Центр+1клетка вправо<=> Центр+1клетка вправо
    Центр <=> Центр+1клетка вправо
    Центр <=> Центр
    Центр <=> Центр
    Центр <=> Центр

    Вариант 2 проиграл.
    Расположение всех точек, шаг 3:
    Вариант 1 <=> вариант 2
    Центр+1клетка вправо<=> Центр+1клетка вправо
    Центр <=> Центр+1клетка влево
    Центр <=> Центр
    Центр <=> Центр
    Центр <=> Центр

    Если вариант 2 проиграл, то точка второй горизонтали оказалась по центру. И в таком плане.

    --

    Плюсы и минусы. У первого варианта, очевидно, больше эффективность, но он не продуман до конца, а второй вариант 100% рабочий, но достаточно долгий.
    Конечно, можно совместить 1 и 2 вариант. Таким образом После первого этапа (оценки ближних от центра клеток), можно перемещать точки в крайние положения.

    Что я не продумал - вероятно есть способ использовать оба вариант, а не когда один в простое :)
    Ответ написан
    Комментировать