• Как написать переводчик с кириллицы на латиницу?

    @Zewkin
    Я у мамы фронтэндер
    Да как угодно. Я когда-то для первого Angular делал так

    .directive('translit', function() {
        var rules = {                           // according to http://zakon3.rada.gov.ua/laws/show/55-2010-%D0%BF
          'А' : 'A',
          'Б' : 'B',
          'В' : 'V',
          'Г' : 'H',
          'Ґ' : 'G',
          'Д' : 'D',
          'Е' : 'E',
          'Є' : ['YE', 'IE'],
          'Ж' : 'ZH',
          'З' : 'Z',
          'И' : 'Y',
          'І' : 'I',
          'Ї' : ['YI', 'I'],
          'Й' : ['Y', 'I'],
          'К' : 'K',
          'Л' : 'L',
          'М' : 'M',
          'Н' : 'N',
          'О' : 'O',
          'П' : 'P',
          'Р' : 'R',
          'С' : 'S',
          'Т' : 'T',
          'У' : 'U',
          'Ф' : 'F',
          'Х' : 'KH',
          'Ц' : 'TS',
          'Ч' : 'CH',
          'Ш' : 'SH',
          'Щ' : 'SHCH',
          'Ю' : ['YU', 'IU'],
          'Я' : ['YA', 'IA'],
        }
        return {
          link: function(scope, element, attrs) {
            element.bind('blur', function(e) {
              var translited = '';
              element.val(element.val().toUpperCase());
              var letters = element.val().split('');
              letters.map(function(letter) {
                var latinLetter;
                rules[letter] ?
                  Array.isArray(rules[letter]) ?
                    letters.indexOf(letter) == 0 ?      // checking if the letter is the first in the word
                      latinLetter = rules[letter][0] :
                      latinLetter = rules[letter][1]
                  : latinLetter = rules[letter]
                : latinLetter = '';                     // if there is no rule for the character, then replace with nothing
                translited += latinLetter;
              })
              scope.$apply(function() {
                scope.customer.personalData[attrs.translit] = translited;
              })
            })
          }
        }
      })
    Ответ написан
    Комментировать
  • Как отследить "падение" скрипта?

    AlexMaxTM
    @AlexMaxTM
    Вообще при работе с демонами делается следующая схема.
    1. Любой демон при старте записывает свой PID в какой-нибудь файл и работает.
    2. По крону, допустим каждые 5 секунд, запускается менеджер, который считывает файл(ы) с записанным PID и проверяет жив ли процесс. Если процесс жив, то менеджер завершает свою работу. Если процесс умер, то он поднимает демона, и завершает свою работу.
    Ответ написан
    3 комментария
  • Прошивки для esp8266?

    NeiroNx
    @NeiroNx
    Программист
    Думаю проще использовать nodemcu lua
    там файловая система и интерпритатор LUA 5.1
    код запускается из файлов и зная логику работы можно все это описать на языке програмирования.

    Порог вхождения(минимальное количество знаний) у LUA ниже чем у C++
    собираешь тут https://nodemcu-build.com/ выбирая только нужные модули, там же и документация по ним. Для всяких DS18B20 есть готовые библиотеки как на LUA так и встроенные в прошивку написанные на C++.
    Прошивку лучше использовать с Float(с сайта приходит обычно 2 версии на почту).
    Ответ написан
    Комментировать
  • Можно ли научиться "отключать других"?

    Что-то напоминает... мультик )))

    А вообще, гуглите тренировки внимания, медитации, прочую психологию и учитесь пропускать "шум" мимо.
    Ответ написан
    1 комментарий
  • Можно ли писать вирусы на python?

    AlexDarkStalker
    @AlexDarkStalker
    Хочу научится программировать на Python
    Я увлекся пайтоном может с 2 месяца назад. Я написал на нем себе для компьютера ассистента с распознаванием речи(очень глупого, но все же он облегчает мне жизнь), написал парсер погоды(и встроил в ассистента), хотел поиграться с нейронными сетями, но понял что 2 месяца - это довольно короткий срок, и решил лучше подучить как пайтон, так и всякую теорию, которая может пригодиться программисту. Думал про написание вирусов, но даже не приступил, потому что вспомнил, что питон не компилируется, и получается вирус должен всегда носить с собой интерпритатор, который много весит(для вируса). Я думаю пайтон больше подходит для частного пользования, всяких научных исследований и других полезных штуках, чем для написания вирусов. Для вирусописания лучше использовать языки из семейства Си, т.к. в мире много компов с операционной системой Windows.
    Если что неправильно написал, не бейте сильно, я еще маленький программист.
    Ответ написан
    2 комментария
  • Какие грэйды развития внутри вашей компании?

    У нас нет уровней, нет грейдов, нет карьерного роста, нет тимлида, нет повышения зарплаты
    Ответ написан
    Комментировать
  • Как создать онлайн сервис конструктора всплывающих окон?

    bootd
    @bootd
    Гугли и ты откроешь врата знаний!
    Бекенд - делает серверную логику,
    Фронтенд - делает клиентскую логику,
    Верстальщик - верстает сервис, по макету, нарисованному дизайнером
    Дизайнер - рисует дизайн сервиса

    По 1му каждый. Можно убрать верстальщика и оставить только фронтенд разработчика, при условии, что тот умеет верстать(хотя, он должен уметь верстать, но, некоторые уже не любят этим заниматься).

    Тз, откуда мне знать, как его правильно составить, если я не знаю весь функционал вашего сервиса, пускай он и похож на другие. Для начала выпишите себе весь функционал, опишите работу этого функционала, что с чем должно взаимодействовать. Какой должен быть личный кабинет, что в нём должно быть, сайты, на которых размещено окно, графики какие-то или ещё что-то. Если вообще не знаете, то я бы на вашем месте сначала изучил сервисы, которые вы привели в пример. Как и что у них сделано, выписал бы минусы того сего, плюсы какие у них, отличие друг от друга. Эти данные использовать для построения своих требований для своего сервиса.

    Порядок действий.
    1) Описали всю логику сервиса, ПОЛНОСТЬЮ, до мельчайших деталей, прям каждую писечку!!!! Всё всё всё. После прочитать раза 3 от начала до конца, 100% появятся правки или дополнения. Все функции по монетизации, тарифы, личные кабинеты, конструктор самого окна, функционал вставки этого окна и всё всё всё. Ибо никто не станет вам на добром слове вносить изменения в созданную прогерами архитектуру проекта, потому что вы, не удосужились вписать новое требование в тз. С вам, что логично, потребуют доп плату уже к той, что была оговорена в начале.

    2) Ищите дизайнера. Нашли? Отлично! Тогда:
    1.1) По вашему тз делается прототип, того, что и как будет расположено на сайте, где какие элементы. Это как первые наброски, чертёж, если угодно.
    1.2) На основе этих набросков рисуется макет, утверждается дизайн сервиса.
    1.3) Утвердили все страницы, все элементы, все всё всё. У вас уже есть то, как выглядит ваш сервис.

    3) Берём фронтенд разработчика + бекенд разработчика
    Тут нужно подойти ответственно. Хорошего разработчика порой трудно найти, часто, хорошие стоят дорого, дешёвые сделают тяп ляп и ваш сервис станет очень сложно менять и дополнять в будущем.

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

    Сам план работ, лучше разделить на этапы с вашей стороны. Т.е. Сделали один функционал, проверили, ещё 1 проверили. Разделить всё на задачи. Вам от этого только лучше, т.к. вы видите, что уже реализовано и сам факт того, что процесс идёт. Но повторюсь, нужно эти этапа с прогерами обсудить и принять.

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

    4) Тестирование
    Все всё сделали, ура. Дальше, начинаем тестировать сервис на его функционал. Ошибки и баги будут 100%. Все мы люди, все можем ошибиться, нужно эти ошибки исключить.

    5) Выкатка приложения:
    Т.к. сайт делался на дев(там, где разрабатывают) версии, осталось выложить сайт на основной домен(Который вы должны ещё приобрести). Выложили, всё настроили, ура. Приложение готово. Далее, реклама, маркетинг, сео и прочая чушь.

    P.S. Так как всё это пахнет фрилансом, то будьте готовы, что вас могут кинуть, игнорить, пропадать не известно куда. Не забудьте составить договора с прогерами, где будут описаны все нюансы. А так же, что бы под конец все права принадлежали вам и только, получение всех доступов, данных и т.п. Иначе потом, можете всё похерить и никто вам уже не поможет.

    Примерно так))
    Ответ написан
    Комментировать
  • По вашему, в какой точке цикла зрелости находится технология "Умный дом"?

    @cicatrix
    было бы большой ошибкой думать
    Могу как потребитель ответить: я ещё не настолько обленился, чтобы мне было сложно дотянуться до выключателя и не настолько сошел с ума, чтобы подключать в сеть систему вентиляции и водоснабжения при помощи китайского дырявого роутера.
    Есть, безусловно, ниши, где можно кое-что в быту автоматизировать, но называть это "умным домом" я бы не стал.
    И вообще, мне кажется, в самом названии кроется маркетинговый просчёт. Сейчас столько всего "умного" развелось (умную швабру недавно видел), что доверие народа к приставкам "умный" весьма низкое. Да и нифига эти технологии не "умные" на поверку. Когда видят "умный дом", подразумевается либо что-то спаянное из желудей и спичек, либо что-то адски-дорогое, а главное - нахрен не нужное.
    В чём-чём, а в технологии быта 20-й век дал людям массу полезных вещей, улучшать которые уже просто некуда. С точки зрения маркетинга я бы вообще избегал понятий "умный дом", а прибегал бы к более нейтральному слову "автоматический".
    Ответ написан
    2 комментария
  • Как управлять оборотами вентилятора 220в, использую ардуино?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Ну самим реле управлять скоростью оборотов не получится.
    И вообще - получится ли в принципе - зависит от типа двигателя вентилятора.
    Ответ написан
    2 комментария
  • Как сортировать разные телефонные номера?

    Не могу подсказать никакой библиотеки для работы с числительными на русском (да и на любом другом языке), но вы не думали сделать парсер попроще?
    Что-нибудь вроде:
    import re
    
    
    REPLACEMENT = {
    	'ноль': '0',
    	'один': '1',
    	'два': '2',
    	'три': '3',
    	'четыре': '4',
    	'пять': '5',
    	'шесть': '6',
    	'семь': '7',
    	'восемь': '8',
    	'девять': '9'
    }
    
    
    PHONE_REGEX = re.compile('(\+)?\d{10,11}')
    
    
    def parse_phones(file_path):
    	parsed = []
    	unparsed = []
    	with open(file_path, 'r') as file:
    		for line in file:
    			name, phone, *_ = line.split(':')
    			name = name.strip()
    			phone = phone.strip()
    			for key, value in REPLACEMENT.items():
    				phone = phone.replace(key, value)
    			if PHONE_REGEX.match(phone):
    				phone_len = len(phone)
    				if phone_len == 10:
    					phone = '+7' + phone
    				elif phone_len == 11:
    					phone = '+7' + phone[1:]
    				parsed.append((name, phone))
    			else:
    				unparsed.append(line)
    	return parsed, unparsed

    Вместо засовывания в списки можно сразу писать в файлы. Как минимум, это уменьшит количество "неизвестных" номеров.
    Ответ написан
    1 комментарий
  • Как автоматизировать копирование/вставку текста?

    Ezhyg
    @Ezhyg
    CLCL и другие программы - менеджеры буфера обмена или имеющие его в составе, как Punto Switcher.
    Ответ написан
    1 комментарий
  • Как лучше всего обрабатывать ошибки в python?

    Советую вам посмотреть в сторону декораторов. Полезно будет как для решения задачи, так и для общего ознакомления с синтаксическими возможностями языка.
    Дам пример самого простого декоратора, единственная функция которого "тихо" логгировать любой exception:
    import logging
    
    
    LOG = logging.getLogger(__name__)
    
    
    def handle_silently(function):
        def wrapped(*args, **kwargs): 
            result = None
            try:
                result = function(*args, **kwargs)
            except Exception as e:
                LOG.error(
                    '{}(*{}, **{}) failed with exception {}'.format(
                        function.__name__, repr(args), repr(kwargs), repr(e) 
                     )
                )
            return result
        return wrapped
    
    
    @handle_silently
    def some_function(test):
        return test / 0

    Конструкция @handle_silently заменит вашу функцию some_function на функцию wrapped.
    Механика работы wrapped является, скорее, антипаттерном, поскольку замалчивать exception совсем и тем более отдавать вместо него None - это гарантированный способ выстрелить себе в ногу. Это просто пример, в боевом проекте я бы посоветовал ререйзить (LOG.error(...); raise) ошибку в декораторе и обрабатывать несредственно в месте вызова функции (логгирование, естественно, можно и оставить).
    Для затравки и для демонстрации того, как это может быть полезно - декотораторы могут быть параметрическими (достигается это путём создания фабрики декораторов):
    def decorators_fabric(handler_function):
        def decorator(function):
            def wrapped(*args, **kwargs):
                handler_function(function.__name__, repr(args), repr(kwargs))
                return function(*args, **kwargs)
            return wrapped
        return decorator
    
    
    @decorators_fabric(print)
    def my_test_function(arg1, arg2):
        return arg1 * arg2
    Ответ написан
    Комментировать
  • Могут ли несколько запущенных в Pycharm копий одной моей программы писать в один и тот же файл данные?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Запускаю 5 копий своей программы через pycharm, все они записывают данные время от времени в один и тот же файл. Чем это может грозить?
    Не думаю, что механизмы для работы с файлами Python чем-то отличаются от подобных механизмов в других языках. По этому, могу предположить, что если не вешать на файл блокировки (и не снимать их в последствии) - это может грозить хаотичностью этих самых данных в файле, а максимум - ошибкой во время записи (и то не факт).
    Ответ написан
    Комментировать
  • Где найти рассказ про хакера?

    dok2d
    @dok2d Автор вопроса
    Сисадмин, делаю сайты разной паршивости
    Нашёл!
    Автор: mindw0rk
    Рассказ: Незнакомец по ту сторону сети
    Рассказ не длинный.
    Ответ написан
    6 комментариев
  • Как насчёт того, чтобы выделять сообщения топикстартера?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Конкретная реализация в виде зеленого фона не нравится :)
    А вот идея - очень нравится. Имхо, полезно. Не раз ловил себя на том, что когда пишу коммент, скроллю вверх посмотреть это автор вопроса или нет. Замечал несколько раз дискуссии других людей, которые спустя 10+ комментов только понимали, что общаются с топикстартером.
    Ответ написан
    2 комментария
  • Какой backend выбрать для изучения?

    @deliro
    Если мало времени, то выбирайте python
    Ответ написан
    Комментировать
  • Добавлять ли virtualenv в git?

    idegree
    @idegree
    Senior Workaround Developer
    Лучше писать зависимости в requirements.txt и уже этот файлик добавлять в git.
    Пример файла (можно с указанием версий через ==, можно без):
    Django==1.8.5
    django-flat-theme==1.1.1
    mysql-python==1.2.5
    gunicorn==19.4.1
    pytz==2015.6
    python-memcached==1.57
    django-debug-toolbar==1.4


    При клонировании репозитория на другой компьютер или сервер выполните (предварительно создав и активировав нужное виртуальное окружение):
    $ pip install -r requirements.txt
    Таким образом, вы разом установите все необходимые пакеты.
    Ответ написан
    3 комментария
  • Можно ли использовать старый ноутбук как монитор?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    Дешевле и быстрее купить монитор. потому что подходящий LVDS адаптер придётся долго и нудно искать, я уж не говорю про сборку цепей питания у этой конструкции
    Ответ написан
    1 комментарий
  • Как легально продать Bitcoin?

    matsuhito
    @matsuhito
    Вожделею
    Обменивай и выводи частями
    Ответ написан
    Комментировать
  • Можно ли переназначить нажатие колеса мыши на боковую клавишу мыши в браузере Google Chrome?

    Stalker_RED
    @Stalker_RED
    В самом браузере такого вроде бы нет, но вы можете это сделать глобально при помощи autohotkey, autoit, nncron или аналогов.
    https://ru.wikipedia.org/wiki/AutoIt#.D0.A1.D0.BC....
    Ответ написан
    Комментировать