• Как и где можно подрабатывать pl/sql девелоперу?

    @Draconian
    Oracle Developer
    Оракл есть деньги закупать только у крупных компаний, которым фрилансеры не нужны. Так что в этой сфере всё сложно с подработкой.
    Чтобы, например, оптимизировать чужие запросы, нужно знать предметную область, в которой заказчик работает, и без этих знаний, как правило, не подпускают людей к базе данных.
    Ответ написан
    Комментировать
  • Как создать точную копию таблицы?

    @Draconian
    Oracle Developer
    Каким образом вы хотите создать точную копию, не изменив названия таблицы\индексов\ключей?
    Тут можно только посоветовать придерживаться каких-нибудь правил именования объектов в БД, чтобы после получения всех скриптов заменять в них названия.
    Ответ написан
    1 комментарий
  • Что такое core.autocrlf и core.safecrlf?

    @Holfamer Автор вопроса
    Настройка core.autocrlf с параметрами "true" и "input" делает все переводы строк текстовых файлов в главном репозитории одинаковы.
    core.autocrlf true - git автоматически конвертирует CRLF->LF при коммите и обратно LF->CRLF при выгрузке кода из репозитория на файловую систему (используют в Windows).
    core.autocrlf input - конвертация CRLF в LF только при коммитах (используют в Mac/Linux).

    Если core.safecrlf установлен на "true" или "warm", Git проверяет, если преобразование является обратимым для текущей настройки core.autocrlf.
    core.safecrlf true - отвержение необратимого преобразования lf<->crlf. Полезно, когда специфические бинарники похожие на текстовые файлы.
    core.safecrlf warn - печать только предупреждение, но принимает необратимый переход.

    Более полная инфа:
    core.autocrlf
    core.safecrlf
    Ответ написан
    Комментировать
  • Как правильно написать авторизацию/аутентификацию?

    @aqwAntonio
    не хочу занудствовать, но еще не рассмотрен вопрос защиты от фиксирования идентификатора сеанса, в этом случае функция session_regenerate_id() генерирует новый идентификатор сессии текущего посетителя. само же значение идентификатора сессии в куки устанавливается функцией session_start(), а вам ее в любом случае надо вызвать, иначе сессии не будут работать

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

    поэтому по порядку:
    1.1 Что писать в куки/сессию?
    ничего вручную в куки писать не нужно, вызываете session_start().
    в сессию можете записать значение is_auth = true после того, как проверите, что логин и пароль верные

    1.2 Как на каждой странице организовать проверку авторизован пользователь или нет?
    ну это впрос больше архитектуры приложения, чем вопрос только авторизации. для пары страниц можно сделать общий подключаемый файл проверки авторизации, а для среднего проекта лучше сразу использовать фреймворк, но тогда вопросы об авторизации у вас вероятно изменятся, т.к. во фреймворках обычно уже заложен базовый функционал авторизации. в самом простом случае проверяете что значение сессии is_auth === true

    1.3 Если нужно, чтобы у пользователя был только одновременный доступ с одного устройства - как быть?
    ну это довольно сложно но попробую объяснить вкратце
    - во первых, нужно хранить актуальный идентификатор сессии пользователя в постоянном хранилище, БД или еще где либо (т.е. на каждой странице после проверки авторизации обновляете идентификатор сессии в БД)
    - во вторых, вам нужно хранить сессии авторизации в определенной папке, заданной функцией session_save_path($dir). смысл в том, что папка $dir должна быть доступна вам для записи чтения (изучите вопрос безопасности отдельно)
    - в третьих, после успешной авторизации вы извлекаете из БД идентификатор сессии данного пользователя (см п. 1) и удаляете эту сессию из директории (см п. 2), и только потом записываете новый идентификатор сессии пользователя в БД (снова см. 1)

    1.4 А если с нескольких?
    тоже самое что в 1.3, только раньше у вас была структура таблицы допустим user_id, session_id, а в данном случае будет user_id,session_id, device_id т.е. смысл в том, что это не таблица пользователей а таблица сессий пользователей

    Тажк рекомендую прочитать книгу "PHP. Рецепты программирования" от издательства O'Reilly, второе издание или более позднее

    По второму вопрос в сущности ничего не меняется, кроме того, что дополняется функционалом инициализации и обработки ответов от vk.com. об этом можете почитать на странице https://vk.com/dev/auth_sites
    Ответ написан
    Комментировать
  • Где в скайпе найти свой ID по которому другой человек может меня добавить в контакты?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Зайдите на сайт скайпа https://www.skype.com/ , авторизуйтесь (на маке меню File - My Account).
    Потом перейдите на https://secure.skype.com/portal/account/settings
    Ищите строку "Skype Name".
    Ответ написан
    3 комментария
  • Что послушать про программирование?

    Слушать подкасты это и весело и полезно. Но выбрать для себя подходящий это та еще задача.

    Порекомендую несколько, которые мне нравятся:
    1) Разбор Полетов - о технологиях, гаджетах и программировании
    2) Радио-Т - о технологиях и программировании + болтология :)
    3) РадиоJS - о JS и фронтенде
    4) Откровенно про IT карьеризм - разговорное шоу с интересными собеседниками, о программировании, карьере и всем-всем
    5) RWpod - о рельсах, руби и пр.
    6) RubyNoName - о рельсах, руби и пр. сейчас чуть заглохло
    7) ruby5 - о рельсах, руби и пр. на английском

    + Бинарное Радио
    Ответ написан
    1 комментарий
  • Какую базу выбрать под будущий проект?

    @Draconian
    Oracle Developer
    Данные коллекции можно хранить просто на диске, а в БД сохранять ссылку на файл и информацию о самом файле.
    Справочники, роли, пользователей, конечно, проще хранить в реляционной БД.
    Ответ написан
    Комментировать
  • Какую базу выбрать под будущий проект?

    Структурированную информацию проще хранить и обрабатывать в хранилищах реляционных СУБД. В МонгоДБ лучше хранить именно документы, как единицу информации каждая.
    Ответ написан
    Комментировать
  • Long polling - как сделать уведомление?

    @mayorovp
    А запрос через секунду прерывается - или же сервер что-то отвечает? Если сервер успешно отвечает - то надо и копаться в сервере, а не в клиенте.

    Лично я вижу в серверном коде два подозрительных места.
    1. Если в базе есть хоть одно сообщение, то оно будет выдаваться клиенту каждый раз. Нужно либо удалять его из базы - либо добавить в запрос какой-нибудь фильтр, чтобы отсечь уже прочитанное. Если поле id - автоинкремент, то можно фильтровать по нему.

    2. Делать long pooling на связке "клиент-сервер" - и активных опрос на связке "сервер - база данных" - не лучший вариант. Надо вам поискать способ серверному скрипту так же уснуть до появления события, иначе весь long pooling непонятно зачем.
    Ответ написан
    2 комментария
  • Как рассчитать сроки проекта, если проект большой и нетиповой?

    iiiBird
    @iiiBird
    Пока ты спишь - твой конкурент совершенствуется
    1) делать подробное тз.
    2) разделить тз и раздать тем кто его будет реализовывать.
    3) каждому звену, который делает проект предоставить время ознакомления с проектом и попросить определить примерное время за которое он сможет реализовать свою часть.
    4) собрать данные о времени у сотрудников - проанализировать.
    и только теперь вы можете предоставить примерное время разработки клиенту.

    p.s. суть этого метода в том, что сотрудники сразу ознакомлены с тем, что им предстоит делать. и в 90% случаях не бывает ситуаций, как вы описали "Оказывается что модуль требует на разработку больше часов чем ожидалось."
    p.p.s. понятное дело что такой метод тоже не даст вам 100% точный дедлайн, но много проблем точно отпадет.
    Ответ написан
    6 комментариев
  • Считать с консоли/файла миллион int 'тов c разумными затратами по памяти и скорости Python?

    longclaps
    @longclaps
    Как-то так:
    from random import choice
    import re
    
    def main(s):
        for g in re.finditer(r'-?\d+', s):
            i = int(g.group(0))
            # print(i)
    
    
    nums = [str(i) for i in range(-100, 101)]
    N = 10 ** 6
    s = ' '.join(choice(nums) for _ in range(N))
    
    main(s)

    На моей машине main(s) отрабатывает за 0.5сек.
    Есть вариант чуть быстрее:

    def main(s):
        d = {str(i): i for i in range(-100, 101)}
        for g in re.finditer(r'-?\d+', s):
            i = d[g.group(0)]


    зы Python 3.5, на 2.7 будет быстрее.
    Ответ написан
    1 комментарий
  • На чем писать странички с SQL запросами?

    dasha_programmist
    @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    Для оракл удобно использовать Apex от самого же оракла
    Ответ написан
    Комментировать
  • Docker. Как его применять на вебсервере?

    @pacahon
    Вы читали кучу мануалов, но упустили самое главное - официальная документация. Как так? Там как раз и говорится как делать и почему. На вопросы уже поотвечали, но пройдусь ещё раз, раз столько времени на чтение ответов потратил :>
    1) https://docs.docker.com/engine/userguide/dockervolumes/
    2) https://docs.docker.com/engine/articles/host_integ...
    3) Ответ простой - как хотите. Как лучше знаете только вы, звучит банально, но это так. Хотите хоть всё в один контейнер запихните, это ваше дело. Хотя рекомендуют 1 компонент на 1 контейнер. В этом есть своя логика - хочется обновить только mysql - обновляете этот контейнер и не думаете, поломался ли у вас uwsgi или nginx или ещё чего.
    4) Напишите свой первый Dockerfile, станет куда яснее как выбирать. А пока доверяйте только официальным образам.
    5) git? Этот вопрос - следствие непонимания вопроса 1)
    6) Уже ответили. Самое простое, если не понимаете - не используйте dockerhub вообще. Или начните понимать. :) Или платите за приватные репозитории, чтобы не думать об этом.
    Ответ написан
    Комментировать
  • Docker. Как его применять на вебсервере?

    nazarpc
    @nazarpc
    Open Source enthusiast
    1) data-only containers
    2) решите задачу подъема самого сервера с запущенным Docker, в контейнерах задаете политику всегда перезапускаться - они вместе с самим Docker запустятся
    3) в идеале по контейнеру на процесс либо логическую часть, к примеру MariaDB это один, Python сервер это второй и так далее
    4) внимательно изучать внутренности, кроме официальных выбирать только те, которые имеют автоматические билды с отрытым Dockerfile и поддерживаются актуальными, иногда придется делать свои
    5) ответ тот же что и 1) + резервное копирование/восстановление из томов
    6) не встраивайте чувствительные данные в образы и не попадут

    В качестве неплохого примера можете посмотреть мою разработку (правда, ориентирована на PHP, но суть та же, посмотрите как устроено): https://github.com/nazar-pc/docker-webserver
    Ответ написан
    7 комментариев
  • Как правильно совместить bash и python в автотестах?

    3vi1_0n3
    @3vi1_0n3
    Вполне нормально, если скрипт не очень большой.
    Я бы сделал вызов команд из питона и не плодил сущности. Заодно можно в питоне же сделать обработку ошибок на случай невозможности установки пакетов, например.
    Ответ написан
    Комментировать
  • Как правильно написать авторизацию/аутентификацию?

    Здесь еще нужно очень хорошо разделять понятия авторизация и аутенфикация.

    Аутенфикация - это определения пользователя, то есть, что это за пользователь. Обычно этот этап проходит сразу же после ввода логина пароля. Если логин верный, ты мы и сразу можем сказать: "Пользователь аутенфицырован". К примеру, если использовать HTTP Basic аутенфикацию, то в случае не верного логина/пароля будет ошибка 401.

    Авторизация - это проверка прав пользователя к определенному ресурсу. К примеру, может ли пользователь редактировать какой-то материал (статью, коммент), может ли он просматривать какой-то ресурс.

    Очень часто еще может "всплыть" понятие "Фаервол" - это механизм определения для поведения системы аутенфикации/авторизации. К примеру: В личном кабинете, необходимо чтобы пользователь был обязательно авторизован, но вот на сайте (доки, другие страницы), нет. В результате, мы можем создать два фаервола, определяющих это поведение для разных URL-ов.

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

    Лично для своих проектов, я всегда использую Symfony Security, так как в этом пакете уже все сделано место Вас. Главное это верно подключить и настроить, и вауля :)
    Ответ написан
    1 комментарий
  • Самый быстрый веб-сервер php для windows?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Как добиться того, чтоб сайты (которые пишутся с помощью php-фреймворков) на локальном веб-сервере просто летали?

    web сервер выполняет транспортную роль по большей части. Что бы сайт "летали" - их нужно писать так, что бы "летали"))

    Какой локальный сервер использовать?

    nginx+php-fpm

    Пробовал много чего: vagrant, ubuntu-сервер разворачивал сам. Но эти варианты для меня не удобны.

    Вам шашчеки, или ехать?

    NGINX вообще ни разу не пробовал. Его хвалят, но как его устанавливать и настраивать в Windows я не нашёл.

    Вы того, не воспринимайте win как серверную ОС и все встанет на свои места))
    Ответ написан
    2 комментария
  • Можно ли написать на python, бота для telegram?

    shultais
    @shultais
    Обучаю программированию на Python и SQL
    Да, можно, уже и клиент есть на Python https://github.com/leandrotoledo/python-telegram-bot
    Ответ написан
    Комментировать
  • Как попасть в backend-разработку?

    yucom
    @yucom
    Ruby on Rails Developer
    У вас хорошая база. Я бы посоветовал написать небольшое приложение на Django с использованием методологий TDD и Gitflow, например, микроблог - пользователи, сообщения, подписка. И выложите код на github, чтобы показывать работодателям. Интерфейс можно сделать просто на bootstrap. Потом ищите проект на фрилансе или в офис, где в команду требуется джуниор на бекенд и начинайте решать поставленные задачи, смотрите как работают другие. Изучайте теорию и функциональное программирование. Так от простого к сложному дорастете до сеньора и высоких нагрузок.
    Ответ написан
    2 комментария