Задать вопрос
  • Как на 100% удалить cookie на стороне клиента?

    nowm
    @nowm
    Мне кажется, что хранить user_id в куках — не очень хорошая идея. Пользователю в этой ситуации ничего не помешает на своей стороне поставить себе user_id администратора и делать всё, что может делать администратор.

    Лучше всего хранить идентификатор пользователя в сессии ($_SESSION['user_id']), так как пользователь напрямую не сможет этот идентификатор изменить (перехватить сессию будет сложнее, чем заменить user_id в куках). А всякие пользовательские данные, вроде user_name лучше хранить в БД и вытаскивать, когда требуется. В куках, опять же, которые полностью во власти пользователя, это лучше не хранить.

    И потом, когда вам понадобится разлогинить пользователя, просто уничтожаете сессию и всё.

    session_destroy();

    Куку с идентификатором сессии можно даже не уничтожать с помощью setcookie, так как после уничтожения сессии неважно, что там хранится в куке. Когда будете создавать новую сессию, кука просто заменится кукой с идентификатором новой сессии.

    В Firefox можно просматривать куки с помощью расширения Firebug. Все куки для текущей страницы находятся на вкладке «Cookies» панели Firebug, которая открывается нажатием клавиши F12.
    Ответ написан
    4 комментария
  • Как вы делаете договор на оказание услуг почасовой?

    @krekerov
    Fullstack ninja
    Сам договор, заключается до конца года
    https://www.dropbox.com/s/ljkmblcmrzff6bv/%D0%94%D...
    Приложения к договору, заключается поэтапно, с перечислением всех работ и стоимости.
    https://www.dropbox.com/s/xthxdp3w8bpm0du/%D0%9F%D...

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

    @Gems
    Я не рекомендую вам открывать ИП. У меня было два, и больше с этой юридической формой связываться не намерен. Вам придется платить каждый месяц в пенсионный фонд, даже если у вас не будет прибыли. Чего не нужно делать в ООО. У вас будет малое количество транзакций, поэтому можно найти человека, который будет обслуживать ваше ООО за небольшие деньги, меньше, чем вы заплатите пенсионному в ИП. Можно самому освоить отчетность.

    Правительство собиралось в 2015-16-ом обязать ИП платить по 54 тыс рублей в год. Сейчас кризис и от идеи пока отказали, но это не значит очень "умным" депутатам снова не прийдет в голову что-то подобное. Они ведь думают, что если ты коммерсант, то у тебя под кроватью кубышки с деньгами, которые ты прячешь от государства.

    Кроме того, по ИП вы будете отвечать своей собственностью. И если у вас будут долги, вас не выпустят за границу, в отличие от собственников ООО с долгами.

    Update 12.02.15: обслуживание ООО сейчас подорожало и на аутсорсе стоит где-то 60к в год. Идеальный вариант - самому освоить отчетность. Есть разные сервисы типа "Эльба", "Мое дело" и т.п.. Курсы на торрентах есть, также есть разные обучающие видео на ютубах.

    Update 03.05.15: есть замечательные сервисы, типа "кнопки", которые решают вопросы за существенно меньшие деньги.
    Ответ написан
    1 комментарий
  • Сколько примерно стоит инвайтер?

    gadfi
    @gadfi
    https://gamega.org
    Сколько стоит машина?
    Возьмем цифру немного с потолка, пусть 5 000$. Если столько попросят за запорожец то вы вероятнее всего пошлете такого продавца, с еще большим энтузиазмом вас пошлют при попытки купить лаборджини за такие деньги, хотя и то и то машины.
    Нету внятного ТЗ результат хз © фрилансерское народное творчество
    pam_zak.jpg
    Ответ написан
    Комментировать
  • Как использовать Leaflet оффлайн?

    @ittim
    Можно реализовать с картой OpenStreetMaps.
    1. Скачать нужный фрагмент карты extract.bbbike.org в формате OSM.
    2. Нужно отрендерить тайлы. Вот список приложений для рендеринга wiki.openstreetmap.org/wiki/RU:Rendering. Простой в использовании maperitive.net/.
    3.На локальном вэб-сервере разместить папку с тайлами.
    4. ссылка в Leaflet http://localhost/Tiles/{z}/{x}/{y}.png
    Ответ написан
    2 комментария
  • Как начать уважать свой труд?

    sim3x
    @sim3x
    Стоит сьехать от родителей в сьемную квартиру и завести требовательную девушку

    И начни общаться с людьми, у которих дневная сумма на мелочи указана в толщине пачки с долларами
    Ответ написан
    1 комментарий
  • Как стать linux-user?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    Начать пользоваться. Когда у меня встал такой вопрос, просто поставил линь и стал пользоваться. Что не понимал, искал в сети.
    Теперь сижу а макоси.
    Ответ написан
    Комментировать
  • Какую приколюху можно сделать в гит репозитории на новый год?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Не поздравлять их в онлайне:
    %D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%
    Ответ написан
    Комментировать
  • Накладывается ли копилефт на протокол mysql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    MySQL имеет лицензию GPL. Значит, если не используете в своём продукте исходный код MySQL и не линкуете его статические библиотеки, то можете использовать любую лицензию.
    Ответ написан
    Комментировать
  • Как генерировать случайные числа в диапазоне по различным законам распределения?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Один из чисто конкретных способов для дискретной случайной величины (покажу на примере 5 величин):
    Пусть надо получить пять значений [A..E] с соотношениями вероятности 2:7:5:3:4.
    1. Построим накопительную сумму вероятностей: 2:9:14:17:21
    2. Поделим полученные значения на конечную сумму (21): 0.095:0.429:0.667:0.809:1
    3. Сгенерируем псевдослучайную величину X в диапазоне [0:1) с равномерным распределением.
    4. Пройдём по полученному массиву. Как только X станет меньше очередного элемента массива, мы получили нужный элемент.
    Ответ написан
    Комментировать
  • Может ли быть веб-разработка с работами среднего уровня, ориентированная на региональный рынок быть прибыльной?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1) Многие берут заказы в мск, при этом держат разработчиков в регионах(зарплата, субподряд, как угодно), это сильно экономит ресурсы.

    2) Есть мнение что бюджеты все в мск, а в регионах процветают всякие битриксы/джумлы/вордпресы за 10k-100k рублей под ключ. В регионах сильно меньше зарплаты в не-it сферах, меньше население, соответственно и бюджеты меньше.
    Есть мнение что в питере-казани-екатеринбурге скорее всего все веселее чем в среднем по стране, но все равно хуже чем в мск.

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

    PS Не используйте пожалуйста рядом слова "bitrix" и "серьезная разработка", это право смешно.
    PPS Основной массе заказчиков абсолютно плевать используете Вы zend/symfony, делаете code review - или нет.
    Это все актуально для каких то крупных inhouse проектов. А заказчикам нужно что бы Вы за 1-2-3 месяца решили их бизнес задачу.
    Ответ написан
    2 комментария
  • Насколько верна статистика по использованию языков программирования для веб-разработки?

    aen
    @aen
    Keep calm and 'use strict';
    Существуют три вида лжи: ложь, наглая ложь и статистика
    Ответ написан
    Комментировать
  • Aсимптотическая сложность взаимной корреляционной функции?

    @throughtheether
    human after all
    Интересует верхняя граница O(???) для ВКФ дискретных последовательностей длины l и k (к примеру l меньше k) с единичным лагом

    Навскидку, Ο(k^2). Подразумеваю, последовательности одномерны.
    Представим себе окно шириной k, будем в него вдвигать последовательность длины l. Всего возможно k+l вариантов. Для каждого варианта необходимо посчитать скалярное произведение содержимого окна и последовательности длины k (комплексно-сопряженной к исходной), что потребует Θ(k), или Ο(k). Перемножая, отбрасываем младшие члены, получаем Ο(k^2).
    Ответ написан
    Комментировать
  • На каком языке писать демон для разбора XML?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Огромный XML на любом языке разбирают поточными парсерами, например SAX.
    Ответ написан
    Комментировать
  • За какое время можно изучить javascript?

    @Itvanya
    Скажу вам так : я уже долгое время занимаюсь фронт-эндом, мы пишем веб-приложения, 2d-3d игры, сайты и так далее. JS был моим следующим языком после Java. И, говоря честно, JS - абсолютно всеобъемлющий язык, который хорошо выучить очень непросто(гораздо сложнее, чем тот же Java). По-началу, смотря на этот код, половина из которого занимается только фиксами кросс-браузерности становится тошно, потом попроще, но ввиду "особой особенности" js и его прототипно-ориентированности, многие просто хотят вырвать себе глаза, что и делают любые программисты, переходящий с c/c++/c#/Java(любой другой более классический язык). Чтобы писать хорошие модули на JS, могут понадобится годы разработки. Объективно, если сидеть по 2-3 часа в день, результативно заниматься, то можно освоить js и самые начальные паттерны за 4-6 месяцев. Изучение Angular - вообще отдельная тема, которую так быстро ты не освоишь. Angular - это вам не убогий jQuery, от которого реально тошнит, Angular - это по сути отдельное изучение JS заново. Вот как-то так.
    Ответ написан
    7 комментариев
  • Интересные книги для изучения физики / математики?

    zooks
    @zooks
    Frontend
    Интересные у Якова Перельмана:
    "Занимательная физика", "Занимательная математика" и т.д.
    Ответ написан
    Комментировать
  • Как создать композицию функции на саму себя?

    Функция применяется n + 1 раз к n. Для этого надо список из n + 1 функций f свернуть при помощи композиции, а затем применить к аргументу. Добавим ещё fromIntegral, так как в примерах у вас синусы, которым нужно число с плавающей точкой, а n же у вас - целое (функцию можно применить только целое кол-во раз).

    execute f n = foldr1 (.) (replicate (succ n) f) (fromIntegral n)


    где replicate (succ n) f - список из n + 1 функций f, foldr1 (.) - свёртка списка композицией

    Есть и второй вариант, не сворачивать n + 1 функций f через композицию, а сворачивать список, на каждом шаге сразу применяя к аргументу, т.е. так:

    execute f n = foldr ($) (fromIntegral n) (replicate (succ n) f)


    где ($) - функция применения, т.е. f $ x = f x
    Ответ написан
    Комментировать
  • Процентное соотношение компьютеров во всем мире(или в России) по производительности?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в России будет явный проигрыш по терафлопсам на квадратный километр.
    Ответ написан
    1 комментарий
  • Как генерировать случайные имена?

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

    Мои рекомендации:
    Используйте длинну префикса 3-4 буквы (примерно длинна слога).
    Боле длинные префиксы будут порождать слова слишком похожие на исходные и их рекомбинации.
    Более короткие будут не очень благозвучны.
    Обязательно используйте символы начала и конца слова в качестве спец-буквы ('^' и '$'), просто пробела недостаточно, но уже не помню почему.

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

    Для хранения эффективно использовать префиксное дерево с частотами в качесве значений.
    Алгоритм составления словаря довольно простой:
    prefix = '^'
    for letter in text:
      freqdict[prefix+ letter] += 1 # увеличение счётчика этого сочетания
      if letter ='$':  # конец слова, сброс префикса
        prefix = '^'
      else:
        prefix = prefix[-depdth:] # обрезане префикса до максимальной длинны

    После этого нужно нормальизовать значения для каждого префикса, чтобы
    для каждого префикса сумма значений всех хвостов была = 1.
    При таком раскладе можно "склеить" частоты в единичный отрезок, разделёный на части пропорционально частоте, и рандомом выбирать "взвешенно-равномерно".

    Алгоритм генерации:
    prefix = '^'
    while prefix[-1] != '$':
      tails = freqdict[prefix].items() # под-дерево всех продолжений префикса в виде списка (key, value)
      thresh = random() # точка на единичном отрезке
      i = 0 # текущий элемент
      level = 0 # верхняя граница отрезка текущего элемента
      while thresh > level:
        level += tails[i][1]
        i++
      prefix += tails[i][0]


    Код написан по памяти, не принимайте на слово :)
    Наверно, мне уже пора выкладывать библиотеку для рыбогенерации...
    Ответ написан
    3 комментария
  • Как можно реализовать категории и подкатегории в MySQL ?

    Wendor
    @Wendor
    nodejs developer / *nix admin
    id, name, parent
    1, 'категория 1', 0
    2, 'подкатегория 1', 1
    3, 'подкатегория 2', 1
    4, 'подкатегория 3', 1
    5, 'категория 2', 0
    6, 'подкатегория 1', 5
    7, 'подкатегория 2', 5
    8, 'подкатегория 3', 5
    Ответ написан
    2 комментария