• Как распарсить JavaScript Object (не валидный JSON) в Golang?

    @mantyr Автор вопроса
    Никита: У меня входные данные увы в JS Object, можно превратить его в JSON путём не хитрых манипуляций с текстом, но это не правильный подход.

    Чисто парсеров для JS Object не нашёл.
    Дописать в encondig/json так что бы это работало - не на пару минут задача.
    Попробовал несколько json библиотек на предмет возможности легко дописать или попытки распарсить JS Object - предсказуемо не заработали.

    Чисто JS парсер - была такая мысль, вопрос только что именно взять...
  • Как в golang работать с json?

    Вы немного не правы. У топикпастера не валидный JSON, будет сообщение об ошибке
    error: invalid character 'f' looking for beginning of object key string

    А raw будет иметь значение
    []

    Вопрос - как распарсить валидный JavaScript Object но при этом не валидный JSON как у топикпастера? У самого такая задача сейчас. Буду признателен если кто-то подскажет.
  • Как удалять из map в цикле если цикл защищён через RWMutex.RLock() в Golang?

    @mantyr Автор вопроса
    По своей сути там надо придумать свой GC. И если переформулировать задачу именно как "сделать GC для удаления из map" то и подходы надо искать из этой области. Ответов мало видимо потому что аудитория такое не пишет. Если будут мысли в будущем - дополню вопрос.
  • Как реализовать модульность?

    Владимир Грабко: логинится снова к вам на сайт, докупает доп.пакет, скачивает новую сборку.
  • Как PM может помочь Open Source? С чего начать?

    VZVZ: пожалуй оставлю вас тут в одиночестве. Разговор не интересен, да и вы явно переходите на личности и не вижу смысла с вами спорить. Удачи.
  • Как PM может помочь Open Source? С чего начать?

    VZVZ: вы уж определитесь, или компанию которая в это ооочень много сил вкладывает, создавать или предлагать неопытным программистам (коим топикпастер может стать) вносить правки в чужой большой и адски тормозной проект где от него помощи будет процентов...
  • Как PM может помочь Open Source? С чего начать?

    VZVZ: вы так о моём мышлении судите?:) Я просто вижу кучу всего на что времени не хватает, а вы предлагаете тратить его на улучшение проекта который по сути блокнот с кучей примочек для программирования. Если лично вам хочется что-то улучшить в Eclipse то пожалуйста, это свободная страна:) Просто как пример, я думаю, не то на что надо обращать внимание других желающих поучаствовать в Open Source.
  • Как PM может помочь Open Source? С чего начать?

    Вы уверены что Eclipse это тот продукт на который надо тратить время?:) Не одним Eclipse живо направление IDE и их уже и так много на все вкусы. Толку делать ещё один или пытаться улучшить "в некотором роде" монстра Eclipse. Есть куда более важные вещи.
  • Как реализовать модульность?

    Недавно узнал что если распространять только скомпилированные версии package (те что в каталоге pkg) то без исходного кода (то чо в каталоге src) оно собираться с приложением (package main) не будет.

    Статей на тему как подключить Golang пакет скомпилированный как dynamic library пока не попадалось, но, возможно есть возможность сделать через Си прослойку. Другой вопрос что топикпастеру всё равно придётся раздавать исходный код самого приложения, а клиентам компилировать его занова.

    Как вариант - сделать веб-сервис где клиент выбирает список модулей, оплачивает и получает скомпилированный бинарник с нужным количеством функционала без исходного кода. Или с исходным кодом.
  • Как кешировать однотипные MYSQL UPDATE?

    dzoid: суть агрегации данных в памяти в следующем:
    • оперативка очень быстрая
    • данные суммируются за какой-то период в быстрой оперативке
    • отдельным процессом раз в N минут выгружается не 100 000 UPDATE по каждой новости, а только 1 на каждую новость


    Рассчитать можно так:
    • было 200 новостей за 10 минут, по каждой пришло 100 000 просмотров, 200 * 100 000 = 20 000 000 Update
    • стало 200 новостей за 10 минут, по каждой пришло 100 000 просмотров, в памяти 200 * 100 000 = 20 000 000 складываний (прирощений переменной), при этом число укладывается в int (int64) и новой памяти не выделяется, всего 200 переменных. в базу = 200 Update, по одному на новость.


      • in-memory в PHP - это вообще любое решение которое хранит в памяти, но с memcache надо учитывать что это отдельный сервис со своими правилами и говоря про in-memory в PHP я имею в виду библиотеки для работы с оперативной памятью между перезапусками скрипта (shared memory) с доступом внутри PHP непосредственно. Тут можете выбрать любое решение где можно атомарно увеличивать число просмотров.

  • Как низкоуровнево работать с SSD жестким диском?

    Например aerospike, пишут что внутри оно как раз адаптированно к работе с SSD, но в теории всё верно - есть ограниченный набор инструкций которые можно выполнить и главное знать основные логические отличия и как бы всё. Больше особо ни на что не повлияешь. Ещё, возможно, речь идёт о том что бы читать/писать секторами без файловой системы - это действительно должно быть быстрее, но не на много, важно не наделать багов в софте.
  • На какое российское ПО можно импортозаместить операционную систему?

    SyavaSyava: чтож вы сами-то время тратите:) Мне, например, было интересно узнать кого нынче засертифицировали, вот и посмотрел.
  • На какое российское ПО можно импортозаместить операционную систему?

    Сертифицировано ФСТЭК www.linuxcenter.ru/shop/sertified_fstek
    • Rosa
    • SUSE Linux
    • Alt Linux
    • Astra Linux - так же сертифицировано в ФСБ России, Минобороны России
    • Mandriva Linux

    Это то что нашлось поиском за 1-2 минуты. Дальше сами.
  • На какое российское ПО можно импортозаместить операционную систему?

    Что мешает выбрать любой бесплатный Linux дистрибутив на свой вкус? Тот же Alt Linux который вам советуют не на пустом же месте образовался, там так же взяли какой-то другой забугорный дистрибутив и внесли правки. Возможно вам нужен Linux c сертификацией от ФСБ и прочих? Вроде бы в России таких 2 или 3 всего, с разными сертификатами. Можно поискать поиском по linux.org.ru

    Тоже интересно что за муниципалитет и откуда такая аналогия.
  • Как удалять из map в цикле если цикл защищён через RWMutex.RLock() в Golang?

    @mantyr Автор вопроса
    Никита: У меня не чат, но уведомления в real-time и к чему бы эта задача не применялась - важен логический вопрос. Как делать эффективное удаление с минимумом блокировок, с минимумом задержек и так далее. Сама природа откуда это не так важна.

    go processMap(readRequest, readValue, writeValue, deleteKey, quit)
    -- вот эту функцию вы можете запустить в виде горутины лишь один раз, иными словами с данными которые она защищает вы работаете в однопоточном виде. Это отличное решение на потоках.

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

    Мне нравятся каналы, но не в этом случае.
  • Как удалять из map в цикле если цикл защищён через RWMutex.RLock() в Golang?

    @mantyr Автор вопроса
    Вы по сути сделали однопоточный доступ, а этого хотелось избежать.

    RWMutex использовался для того что бы максимально мало блокировать map на чтениях и делать чтения параллельными (там real-time websockets).

    Сбрасывать RLock и брать Lock внутри цикла - плохая идея, так как захватить управление может кто угодно.

    Делать Lock перед циклом так же плохая идея - потому что конкурентные чтения будут ждать и превратятся в однопоточный вариант.

    Сейчас остановился на следующем:
    1. оставляем RLock перед циклом
    2. во время цикла накапливаем ключи которые нужно удалить
    3. после цикла отпускаем RLock
    4. если накопили ключи - запускаем горутину в которой берём Lock и удаляем все разом

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

    Есть ещё вариант - можно помечать элементы в map флагом через atomic, а для удаления сделать горутину которая будет раз в N минут ходить по списку чтением, собирать список удаляемых и потом по схеме выше удалять всех разом. Зато не будет лишних попыток удалить одно и тоже. Для нагруженных WebSockets чатов это, возможно, подойдёт больше. Ещё вариант посмотреть как это сделано в Centrifugo, но возможно там тоже всё через каналы.

    Ждём кто ещё что предложит.
  • Как делают платные плагины для wordpress?

    Не поделитесь списком своих платных/бесплатных плагинов для WordPress? Можно в личку либо публично здесь. Можно и не сейчас а когда таковые появятся - думаю все кто подписался будут заинтересованы узнать что именно вы выпускаете и, возможно, кто-то из них станет вашим клиентом в будущем:)