Задать вопрос
  • Несинхронизированный доступ к памяти и многопоточная гонка?

    VenomBlood
    @VenomBlood
    Касательно представленного куска:
    Вопервых — надо понять, являются ли в вашем случае операции манипулирования double — атомарными с заблокированной шиной, для этого нужно знать архитектуру процессора, на котором все это пускается и видеть дизассембл представленного кода.
    Во вторых надо убедиться в том, что сама функция вычислить(...) — является реентерабельной.
    В третих — с чего вы вообще взяли что это гонка?

    Исходя из представленного кода — можно только предложить обернуть его в double checked locking, но вообще то, что оно до сих пор не обернуто говорит или о том, что первые два пункта уже проделаны (что сомнительно, ибо в таком случае понятно, что в представленном коде нет гонки), или о том, что нифига этот код ни «хорошо отлаженный».
    Ответ написан
    Комментировать
  • Почему изменение кармы без пояснения причины?

    Достаточно сделать так, что бы голосовать за карму можно было только за комментарий, топик, etc и этот объект указывается как причина голоса, автора голоса указывать, разумеется, не нужно.

    С личкой вопрос, конечно, остался, но и там можно что-то придумать. В крайнем случай, ввести черный список, то есть, если человек достает по ЛС, то вы просто можете запретить ему вам писать и не нужно за это минусовать.

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

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

    @1337
    > Почему здесь нету такого?

    Потому что начнутся выяснения отношений и жалобы администрации как «на многих сайтах/порталах». Не в таких количествах конечно, но будет.

    Обидно да, особенно когда ничего плохого не писал, а карма уходит. И уходит молча, хоть бы кто написал, объяснил по-дружески.

    Сливать в большой минус тоже не выход. Человек потом ещё больше начинает троллить: вставлять всякие демотиваторы, бессмысленные картинки и т.д., потому что он уже в таком минусе, что ему «по барабану».

    И, наверно, главный минус — отключаются html-теги. Пытаешься помочь человеку, вставляешь ссылки/картинки, а они все неактивные. Человеку неудобно просматривать и самому неудобно так помогать.
    Ответ написан
    Комментировать
  • Почему изменение кармы без пояснения причины?

    @antivir
    Мне тоже кажется, что неплохо бы ввести указание причины и дать возможность смотреть всем остальным. Тогда можно оценить адекватность пользователя, посмотрев, кого и за что он минусует.
    Ответ написан
    3 комментария
  • Nginx redirect from http to https?

    XHunter
    @XHunter
    Сделайте так:
    rewrite ^(.*) https://$server_name$1 permanent;
    Ответ написан
    Комментировать
  • Взаимодействие десктопного приложения с веб-сервисом?

    @Fak3
    > Например, URL, по которому открывается веб-сайт Dropbox по ссылке из контекстного меню, содержит какие-то параметры авторизации.
    API dropbox'a тут: www.dropbox.com/developers/docs#api-specification

    >Или взять десктопного клиента Last.fm — не уверен, но навряд ли он на каждый запрос шлёт логин/пароль для аутентификации.
    Нет, приложение шлет запрос на ваторизацию и получает в ответ session_key, который потом оно в каждом запросе должно слать
    полное описание API тут: www.last.fm/api/authspec
    Или можно посмотреть на пимер кода тут: github.com/Voker57/qmpdclient/blob/master/src/lastfmsubmitter.cpp
    В методе doHandshake() шлется запрос на авторизацию, потом в методе gotNetReply() получаем и обрабатываем ответ:
    m_session=data[1];
    m_npUrl=data[2];
    m_subUrl=data[3];

    m_session потом шлем в POST-запросе на нужный УРЛ (в методах scrobbleQueued() и scrobbleNp(), на соответструющие url — m_subUrl или m_npUrl)
    Ответ написан
    4 комментария
  • В каком городе России открывать офис разработки? Где наиболее сильные не слишком дорогие разработчики?

    Smileek
    @Smileek
    Поделюсь тем, что услышал на вот этом докладе.

    Первое: средняя московская зарплата разработчиков — порядка 120 т.р., питерских — 80-90, в регионах не более сорока. Аренда, естественно, тоже существенно меньше в регионах.

    Насколько помню, рассматривались как города в принципе пригодные для поиска программистов только Москва, Питер, Екатеринбург и, по-моему, Нижний. Из зала прозвучало обиженное «Почему Новосиб обделили?», и докладчица тут же исправилась, сказав, что да — еще Новосиб.
    Согласно их исследованиям в других городах средний уровень существенно ниже.

    Это что касается материалов доклада.

    От себя добавлю, что не знаю, как уровень, а вот количество программистов у нас (в Пензе, например) очень маленькое — все ищут, очень мало кто находит.
    То есть проблема в регионе будет скорее в выборе, особенно если Вы хотите собрать команду опытных программистов, а не студентов с перспективой.
    Ответ написан
    8 комментариев
  • GUI frontend для Python приложения

    danfe
    @danfe
    Я бы рекомендовал PyQt4 или PySide (разница между ними). Все будет нативно (для Unix/Windows точно, во всяком случае).
    Ответ написан
    5 комментариев
  • Вопросы по GPL?

    danfe
    @danfe
    Должна ли программа, использующая gpl-библиотеку, издаваться под лицензией gpl?
    В общем случае да, должна; см. параграфы 3 и 6 GPLv2.
    Могу ли я распространять исходники под лицензией BSD, если не включать библиотеку в поставку? Если я буду делать компиляцию через py2exe, не будет ли проблем с лицензией?
    Боюсь, что не можете; будут проблемы. Некоторые подробности по ссылкам: 1, 2.
    Ответ написан
    1 комментарий
  • Выбор SSD: Intel vs OCZ?

    @Paulskit
    Советую выбрать Crucial m4. Vertex 3 хорош только на больших обьемах (240 и выше). Скорость как записи (что нормально), так и чтения (что не нормально) у них также зависит от объема накопителя, а значит Vertex 3 120GB гарантированно медленнее Vertex 3 240GB даже по чтению. У Crucial, например, даже малютка на 64 ГБ на чтении показывает одинаковые результаты с большими братьями.
    К тому же, у вас уже был один проблемый диск от OCZ. В новых моделях «детских болячек» тоже хватает, загляните на их форум. Опыт не учит?
    Что касается скоростей. Я в ssd ценю именно рандомную скорость, то есть количество iops на разных обьемах. Высокие линейные скорости, по моему мнению, только бонус и не то из-за чего стоит покупать ssd (хочется линейки — лучше взять несколько обычных hdd в raid0, будет и скорость и обьем). Так вот, по рандому Vertex 3 даже в топовых обьемах не блещет. У них есть интересная модель Max IOPS, но по ней пока слишком мало статистики. Поэтому, я отдаю предпочтение проверенному и безпроблемному m4.
    Ответ написан
    6 комментариев
  • SSD для ноутбука

    @Paulskit
    Выбранный вами вариант не плох, но пока не исправлена проблема с багом в контроллере я бы брать не стал. Хорошо показывают себя диски от Crucial, это дочерний бренд Micron (компании, которая как раз выпускает память для ssd), контроллер уже проверенный, прошивки отлажены, скорости честные (получите то, что заявлено на упаковке в реальных условиях, а не только в синтетике, чем грешат OCZ и другие на контроллерах Sandforce). В общем, советую.
    Ответ написан
    4 комментария
  • Будут ли интересны статьи про SproutCore?

    ob1
    @ob1
    Вы бы хоть написали, что это такое. Не все же как я в Википедию полезут.

    По теме. Думаю, что не помешает. Если, конечно, хорошо подготовите.
    Ответ написан
    2 комментария
  • Поиск ближайшей точки

    Dzuba
    @Dzuba
    Спасибо вам за задачку. Очень она меня заинтересовала.

    Набросал на коленке один алгоритм, реализация на C# работает довольно сносно: ~4.5 сек на моей дряхлой машине. Если грамотно распараллелить (а это должно быть довольно просто для данного алгоритма), то должно быть еще быстрее.
    Единственное отличие от вашей постановки задачи: координаты точек я задавал типом double, а не float.

    Суть алгоритма: перейти к целым числам в том смысле, что накрыть ОДЗ (-10 000 < x,y,z < 10 000) трехмерной сеткой.
    Для случая равномерного распределения точек — проще всего равномерной же сеткой.
    Эксперименты показали, что оптимальный шаг сетки для указанных в условии задачи параметров лежит в диапазоне 100-400, но это не принципиально.
    Необходимо разложить все точки одного цвета (пусть это будет красный) по ячейкам. Лично я решил раскладывать не сами точки, а их индексы в исходном массиве. Это легко сделать, особенно в равномерном случае. То есть, выражаясь языком C#, заполняется такой трехмерный массив:
    List<int>[,,] grid
    Элементами этого массива являются списки индексов красных точек, попадающих в соответствующую ячейку.

    Далее нам придется сделать такую штуку, которую я называю «сферическим циклом» (не знаю, появилось ли какое-то стандартное наименование для таких конструкций). Суть такого цикла можно объяснить на пальцах так: обходим ячейки сетки, начиная с некоторой начальной тройки индексов i0, j0, k0, и далее расходясь концентрическими сферами. Иными словами, сначала цикл попадает в начальную ячейку, затем пробегает все ячейки, отстоящие от начальной на 1 (округленно), потом на 2 (округленно) и т.д.

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

    Есть исходник на C#. Если есть интерес, могу его предоставить.
    Ответ написан
    5 комментариев
  • Вывод комментариев с иерархической структурой

    Вообще говоря, есть три подхода.

    Первый и самый простой — материализованные пути, это когда мы для каждого комментария храним весь его путь от корня, то есть имеем такую структуру, которая выглядит как-то так:

    1.
    1.1.
    1.2.
    1.2.1.
    1.3
    2.
    2.1.

    Ну и так далее. Для получения всех комментариев в нужном порядке необходимо просто сделать запрос на получение всех комментариев, только отсортированных в лексикографическом порядке по полю, которое содержит этот путь. Если не учитывать время выполнения запроса, то асимптотически это дело будет работать за O(n), где n — количество комментариев.

    Второй подход, чуть посложнее, но выглядящий менее криво — для каждого комментария хранить номер родительского. После того, как мы сделали запрос на получение комментариев, отсортированных по id, мы пробегаем по этим комментариям. Будем строить дерево комментов. Понятно, что если у какого-то комментария есть родитель, то мы его уже добавили в дерево, так как у нас комментарии приходят в отсортированном порядке по их номеру. Поэтому возьмём номер родительского комментария и вставим в список его детей текущий коммент (т. е. что-то типа children[parent_id].insert(node_id)). После такого прохода получим дерево, с которым дальше можем делать что угодно. Получаем асимптотику O(n) при использовании обычных массивов и O(n log n) при использовании ассоциативных массивов, но меньший расход памяти.

    Третий подход — использовать уже указанные выше Nested Sets, но на практике, по-моему, их никто не использует.
    Ответ написан
    2 комментария
  • Реакция на изменение состояния объекта

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

    А чем приведенное решение неправильно? Замените calculateCarCost на какое-нибудь updateObject и получите примерно то, что обычно и делают в такой ситуации.
    Ответ написан
    Комментировать
  • 64 или 32 битная архитектура?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Комментаторы выше не слыхали про PAE xD
    Топикстартеру — ставь х64, пакеты больше оптимизированы под i7.
    х32 — экономим память, х64 — экономим CPU. А на твоём EQ4 тебе предстоит экономить дисковое IO.Так что заботтьтся лучше об IO, а не битности.
    Ответ написан
    2 комментария
  • 64 или 32 битная архитектура?

    Конечно x64 лучше, как сказал Napseg «много памяти не бывает». Так что ставь 64 и будет возможость добавить оперативной памяти, да и на сервере должно быть куда больше 4ех гигов, боюсь 4ех не хватит
    Ответ написан
    Комментировать
  • Qt. Работа с Хабрахабр API?

    Paul
    @Paul
    Если вы собираетесь писать на Qt вам категорически необходимо понять, что такое сигналы и слоты. Если вы разобрались, как пользоваться сигналами и слотами, то задавайте конкретные вопросы по QNetworkAccessManager. Если нет — разбирайтесь, без них вы далеко на Qt не уедете.
    Ответ написан
    Комментировать