Задать вопрос
  • Почему immutable это добро?

    laughedelic
    @laughedelic
    Неужели такой подход оправдан с точки зрения ресурсов (памяти в данном случае)?


    В функциональных языках, в том числе в Scala используются т.н. persistent data structures. В памяти хранятся ссылки на предыдущие состояния структуры данных и изменения. Это имеет смысл в сочетании с упомянутой вами сборкой мусора. Разумеется можно просто копировать всё, но на деле так никто не делает. Поскольку в ФП очень много используются структуры типа списков и деревьев, для них это легко реализовать эффективно.
    Рекомендую почитать (англ.) википедию по ссылке выше или вот эту вики на русском.
    Ответ написан
    Комментировать
  • Как выполнить сравнение?

    @abcd0x00
    >>> lst = [('7', '1'), ('5', '2'), ('8', '3'), ('4', '4')]
    >>> [a == b for a, b in lst]
    [False, False, False, True]
    >>>
    Ответ написан
    2 комментария
  • Из чего состоит core programming languge?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Чтобы на языке можно было писать что угодно, он должен в сочетании вычислительной средой быть полным по Тьюрингу. Все.
    Ответ написан
    2 комментария
  • Как в текстовом редакторе vim выделять текст?

    nonlux
    @nonlux
    Попробую обобщить, помню свою панику когда первый раз открыл vim

    Выриант 1:
    - Жмем v (vim переходит visual mode, выделяет все от текущей позиции курсора)
    - двигаем курсор ( можно стрелочками, можно hjkl, можно web%$ как угодно)
    - нажимаем y

    Вариант 2:
    Если речь идет о строках, надо решить эту проблему
    Просто я допустим захлотел скопировать 10, а скопировал 11, как без выделения я это пойму без вставки, наверное что никак

    - набираем :set relativenumber
    - определяем сколько строк надо скопировать по нумерации строк слева (допустим 43)
    - нажимаем y43y

    Профит
    P.S. копировать можно не только строки
    можно слова yw
    можно от текущей позиции до конца строки y$
    можно от начала блока до его конца y%

    Вариантов много и каждый д%#@, как хочет.
    Ответ написан
    5 комментариев
  • UDP server на php. Ошибка при использовании MySQL, как исправить?

    profesor08
    @profesor08 Куратор тега PHP
    1. Раз исключение выскакивает не всегда, то смотрите логи MySQL.
    2. Вам написано в чем дело и даже код ошибки указан: General error: 2006 MySQL server has gone away.
    3. Остается самое сложное - побороть лень.
    Ответ написан
    Комментировать
  • Как лучше дописать/дополнить чат?

    @amatory10
    Кода стыдиться не надо если ему уделенно достаточно внимания, в любом случае хорошее решение приходит не сразу, трудности возникают и благополучно решаются.
    По поводу совета нужно привыкать к строгой организации кода, т.е. не скидывать все в одну кучу, а структурно распределять исходя из логики приложения. Скажем css, js, html в отдельные папки им нечего делать рядом с серверным кодом, т.е. разделение client and server.
    Ответ написан
    Комментировать
  • Как правильно построить архитектуру в MVC?

    @rsi
    software engineer
    Для начала, блейд это просто обертка над php, и не использование его дает даже больше возможностей чем его использование, хоть и не так красиво выглядит.

    Далее у вас два варианта:
    1) Сделать как сказал DieZz, view->share('key', 'value') прописать это лучше всего в контролере от которого потом унаследовать все другие контроллеры.

    2) Определить класс для управления меню и сделать его инжекцию в самой вьюхе. Далее вариант с блейдом, как сделать без блейда надеюсь разберетесь
    @inject('metrics', 'App\Services\MetricsService')
    
    <div>
        Monthly Revenue: {{ $metrics->monthlyRevenue() }}.
    </div>


    С одной стороны делать иньекции во вьюхе вроде как не красиво, с другой стороны шаблон, это не вью, контроллера своего у него нет. Короче холиварная тема, решать вам.
    Ответ написан
    Комментировать
  • Каков ответ логической задачи?

    @kazmiruk
    Задача вполне банальна для собеседований (спрашивали аналогичное в Яндексе пару лет назад, только про стакан и размножающиеся бактерии, но сути не меняет). Ошибка в постановке задачи. Если бы в самом вопросе четко звучало, что каждый день количество бумаги увеличивается вдвое, то вполне логичен ответ, что половина будет на n-1 день, так как количество бумаг в последний день N равно x, а в предпоследний x/2 (чтобы при увеличении вдвое получилось x).
    Ответ написан
    2 комментария
  • PHPStorm, куда слезть с него? nodejs / frontend разработчики, поможете?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Что-то продуктивнее? VIM.

    Вообще интересно чем вас не устраивает WebStorm/PhpStorm. Вы может поделитесь.
    Ответ написан
    7 комментариев
  • С чего начать для программирования на андроид?

    JohnDaniels
    @JohnDaniels
    Андроид — с чего начать?
    Хочу устроиться Android разработчиком. С чего начать, куда двигаться?
    Клиент для сайта на Android. С чего начать изучение?
    Разработка под андроид — с чего начать?
    Программирование под Android — с чего начать путь изучения?
    С чего начать изучение программирования под Android?
    Java for Android — с чего начать?
    Разработка под Android, с чего начать, не имея базовых знаний?
    С чего начать программировать под Android?
    С чего начать создание приложения для Android?
    Разработка игр под Android — с чего начать?
    Разработка под android для веб-программиста — с чего начать?
    Как учить Java и Android?
    А как бы вы изучали программирование под Android?
    Как создать мобильное приложение Android для интернет сайта?
    На сколько глубокие знания в Java необходимы для начала осваивания Android API и последующей разработки?
    Хочу сделать приложение на Android, какие языки нужно учить?
    Что нужно знать до изучения Java android?
    Какие базовые знания нужны для изучения разработки под Android?
    Достаточно ли Android-разработчику стандартной документации?
    С чего начинать изучать Java?
    С чего начать писать на android (eclipse) ?
    Ответ написан
    2 комментария
  • Как избежать закрытия командной строки при нажатии на Enter?

    @Beltoev
    Живу в своё удовольствие
    input()

    UPD:
    Ребят, вы что? Какой цикл? Какое шаманство с cmd?
    У парня скрипт в 2 строки
    t = int(input('Введите температуру в Цельсиях '))
    print (t * 9/5) + 32
    input() # это нужно добавить

    Зачем вы парня пугаете так?
    Ответ написан
    1 комментарий
  • Создание редактора кода, литература, примеры?

    AtomKrieg
    @AtomKrieg
    Давай я поищу в Google за тебя
    По Syntax Highlight можно посмотреть теорию компиляторов на MIT (первую половину про парсинг и токенайзеры):
    ocw.mit.edu/courses/electrical-engineering-and-com...
    Лекции доступны в видео формате. Самым главным этапом в проектировании будет выбор языка попроще - pascal или python :)

    Также еще много информации по тэгам lexical and syntax analysis.
    Вот например:
    www.pling.org.uk/cs/lsa.html
    Ответ написан
    Комментировать
  • На каком языке пишут игровых ботов?

    Jump
    @Jump
    Системный администратор со стажем.
    На каком языке пишут игровых ботов?
    Писать можно на любом языке.
    Поэтому выбирайте любой из тех что знаете.
    Ну и еще есть такой аспект как удобство и производительность написания кода.
    Функционал который вы будете писать на C месяц, на пайтоне используя готовые библиотеке вы набросаете за пару часов, но это опять же если вы знаете пайтон, а если не знаете или плохо знаете, то тоже можете это же самое писать полгода изобретая велосипеды.

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

    @Beltoev
    Живу в своё удовольствие
    Боты можно писать на любом языке, тут уже что больше знакомо и нравится.
    Вам нужно, например, через тот же fiddler просмотреть, какие запросы отправляются на сервер при тех или иных действиях, какие ответы возвращаются, и уже в своём боте эмулировать эти запросы к серверу, будто к нему обращается обычный игровой клиент.

    UPD: по приведенной вами ссылке довольно-таки не надежный способ, когда мы делаем снимок экрана и пытаемся попасть по отдельным координатам
    Ответ написан
    2 комментария
  • Какой язык выбрать для автоматизации тестирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Все зависит от того что вы будете тестить. Если вы будете писать E2E тесты то лучше взять простенький динамический язык, и не PHP, хотя конечно можно и его.

    Я бы рекомендовал вам посмотреть в сторону python или javascript (ruby тоже можно, с капибарой какой, просто python универсальнее).

    Так же немаловажно учитывать на чем написан проект который вы собираетесь покрывать тестами. Если у вас есть люди в команде которые помогут вам с программированием то это несомненнно будет плюсом.
    Ответ написан
    Комментировать
  • На каком языке удобней писать websocket сервер?

    sim3x
    @sim3x
    Для фронтенда выбрал angular - двухсторонний биндинг очень одобная штука, как по мне.
    вопрос в другом, если у тебя большой поток, то как себя поведет ангуляр тебе могут сказать только гуру. Не спеши привязывать себя к фреймворку - лучше сделай прототип и посмотри как он работает в твоей схеме. Желательно сразу на второй версии или хотя б с использованием ES2015
    Задумка Ангуляра в том, что он позволял верстальщикам делать интерактивность просто.

    3. Можно упороться и сделать на Erlang
    whatsUp не упоролся, а просто сделал и держит фб. Главное, что платформа берет на себя много вопросов по обслуживанию кода на множестве нод. И что твой код не уронит всю платформу при апдейте
    Насколько я понимаю у го такой платформы нет
    Ответ написан
    3 комментария
  • Где найти команду?

    nazarpc
    @nazarpc
    Open Source enthusiast
    На хабре было несколько статей по реверс-инжинирингу недавно. Почитайте, попробуйте разобраться, одна из статей как раз была по Excel - там с раскладкой клавиатуры баг вычисляли и исправляли.
    Ответ написан
    2 комментария
  • С чего начать изучение написания TDD - тестов?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    нужно писать TDD тесты.

    Нет, нет такой вещи как "TDD тесты". TDD это одна из методик экстремального программирования (XP). Вам уже привели ссылку на книгу Кента Бэка на эту тему (к слову крайне рекомендую)

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

    - Красный - перед тем как написать код, мы должны написать тест который ломается (обычно в консоли сломанные тесты подсвечиваются красным). Согласно этой методологии писать код вы должны строго тогда, когда у вас есть сломанные тесты. Если сломанных тестов нет, то и код писать не нужно.
    - Зеленый - когда вы получили красные тесты, вы должны максимально быстро дописать код так. что бы тесты были зелеными. Скажем если вы написали тест который ожидает от функции, что она вернет строку "foo" то в коде у вас должно быть не больше чем сама функция и вывод строки "foo". Как только мы этого добились мы либо рефакторим, либо добавляем еще красных тестов что бы потом дописать код. Конечно настолько примитивные вещи делать по такому циклу избыточно, и у Кента Бэка описывается понятие "длины шага", то есть сколько работы мы можем делать на каждом этапе. Вы всегда должны подключать здравый смысл словом.
    - Рефакторинг - на предыдущих фазах мы не загонялись о том насколько наш код красив, насколько мы соблюдали принципы DRY и т.д. так что это фаза отчистки кода. Мы можем делать ее на каждой итерации, а можем раз в пару часов, но важно делать это как можно чаще. На этом этапе мы устраняем дублирование как в коде приложения так и в тестах. Важно отметить что хорошей мыслью будет не рефакторить одновременно и код и тесты, ибо у нас должен быть источник правды. Если мы почистили тесты и при этом они начали фэйлиться, то значит мы что-то сломали пока числити. И наоборот. А если менять и то и то между запусками тестов то не понятно кто виноват.

    Обычно TDD практикуют используя unit-тесты (что логично, ибо они выполняются достаточно быстро что бы выполнение тестов не заставляло нас заваривать чай), что подразумевает собой то, что мы тестируем один юнит (один класс или объект), а все его зависимости должны подменяться на моки (фэйковые объекты, которые нужны что бы проверить как наш объект взаимодействует с другими, об этом тоже много написано). Но никто не запрещает использовать интеграционные/функциональные тесты и при этом практиковать TDD (так например делают чуваки практикующие BDD), а Кент Бэк это дело называет ATDD.

    Собственно TDD дает нам следующие преимущества:
    - вы не тратите время на проектирование системы в микроскопических масштабах, это эволюционный подход, архитектура приложения постоянно меняется и эволюционирует вместе с требованиями. Все требования формализуются в виде тестов.
    - код всегда покрыт тестами (пусть и не на 100%, обычно хватает и 20% что бы можно было жить, все зависит от сроков жизни проекта и требуемого уровня надежности)
    - если вам становится трудно писать тесты (например много зависимостей, сложно мокать) - то это должно навести вас на мысль о не правильной архитектуре и инициировать более глубокий рефакторинг. А при наличии тестов это не так уж и страшно.
    - необходимость покрывать тесты увеличивает потребность в соблюдении всяких принципов типа SOLID и т.д. так как иначе мы начинаем писать тесты очень не эффективно и опять же возвращаемся к тому что с архитектурой что-то не так.

    updated

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

    Минусы TDD проистекают из плюсов. Это эволюционный подход, который хорошо работает когда мы вносим изменения в систему маленькими порциями и всегда рефакторим наш код, что бы он большую часть времени был красивым и удобным к расширению. Если же вам в руки дали легаси проект и сказали отрефакторить, то TDD тут не подходит или подходит плохо. Но опять же такая задача ставится довольно редко, чаще - добавление функционала. И в этом случае мы возвращаемся к внесению изменений маленькими порциями и эволюционному подходу. Просто на это уйдет довольно много времени, но если сравнивать с "рефакторинг + добавление функционала + регрессионное тестирование" то в зависимости от ситуации TDD может дать как профит так и нет. Все зависит от сложности системы. На простых системах в этом нет смысла.

    По поводу области применения... Тут есть несколько точек зрения. Как минимум TDD решает вопрос проектирования архитектуры, а не разработки алгоритмов. Этого мы достигаем тестами. Но опять же через юнит тестирование довольно не удобно разрабатывать определенные типы проектов: комиляторы, трансляторы, различные решения основанные на сложных алгоритмах (например алгоритмы сжатия, шифрования и т.д.), штуки завязанные на сетевом взаимодействии, например клиенты для протоколов. Для этих вещей больше подходят функциональные тесты или же их вовсе сложно покрыть тестами.
    Ответ написан
    5 комментариев
  • Как отказать заказчику, если уже начал работать, но не справляешься с задачами?

    @heartdevil
    плыву как воздушный шарик
    Вам нужно все конкретно изложить заказчику. Если действительно не можете сделать оставшуюся часть, то немедленно расскажите об этом своему клиенту и передайте выполненную часть. Извинитесь. Если же вы можете доделать остальное, но на это вам потребуется больше времени (постарайтесь реально оценить сроки), тогда скажите как есть. Что неправильно оценили сроки из-за того, что не учли то-то и то-то. Заказчик может вас понять и оставить работать дальше, увеличив срок. Но здесь уже не будет переоценки суммы за проект. Даже "супер срочные" проекты не всегда срочные).
    Ответ написан
    Комментировать
  • Как отказать заказчику, если уже начал работать, но не справляешься с задачами?

    Ewintory
    @Ewintory
    Java / Android developer
    Искать более опытного исполнителя и доделывать вдвоем. Отдадите ему всю выручку с проекта. Сливать то легко, куда сложнее найти грамотное решение.
    Ответ написан
    Комментировать