Fork me on GitHub
#clojure-russia
<
2016-01-15
>
rmuslimov03:01:40

@dragoncube: meta это информация о variable, а то что ты передаешь в функцию есть самое значение variable. Нельзя из значения получить variable. Если нужна мета передавай var как аргумент

rmuslimov03:01:28

@dragoncube: ((fn [fvar] (meta fvar)) #’+) или (#(meta %) #’+) или (meta #’+)

prepor08:01:24

turtle: из коробку нужно

prepor08:01:58

есть ряд решений, которые позволяют тебе загружать новые жарки в запущенный репл

turtle08:01:42

Какие?

rm08:01:58

помогите с датаскриптом, пожалуйста.

=> overall-pages-stat-q
        [:find (reduce + ?total-links) (reduce + ?total-scans) (reduce + ?takedown-not-started) (reduce + ?completed) (reduce + ?licensed) (reduce + ?processing)
         :where [?e :studio_id ?studio-id] [?e :name ?name] [?e :total_links ?total-links] [?e :total_scans ?total-scans] [?e :takedown_not_started ?takedown-not-started] [?e :completed ?completed] [?e :licensed ?licensed] [?e :processing ?processing]]

=> (require '[datascript.core :as ds])
nil
=> (ds/q overall-pages-stat-q nil)
#error {:message "Cannot parse :find, expected: (find-rel | find-coll | find-tuple | find-scalar)", :data {:error :parser/find, :fragment [(reduce + ?total-links) (reduce + ?total-scans) (reduce + ?takedown-not-started) (reduce + ?completed) (reduce + ?licensed) (reduce + ?processing)]}}
чего он не хочет reduce делать? Вроде в readme есть какая-то аггрегация (там, правда, min и max только используются)

turtle08:01:26

У меня, по сути, следующая ситуация - добавляются джарники в проект. Сейчас я перезапускаю repl.

prepor08:01:40

см. линк simple_smile

rm08:01:31

я понял, для аггрегации надо было просто sum использовать

turtle08:01:03

Ага. Смотрю. Вроде то. Попробую. Мерси.

seryh11:01:23

как то можно сделать чтобы jvm не аллокейтил под приложение кучу памяти? htop показывает 3519M (VIRT ) реально используемой 500M (RES)

seryh11:01:34

вообще канеш жрет как конь память (

seryh11:01:42

простецкий сокетный демон с вебсервером

be911:01:54

ключ -Xmx?

seryh11:01:10

пробовал, все равно аллокейтит больше трех гигов

seryh11:01:45

хотя мож htop фигню показывает

seryh11:01:52

помониторю другой тулзой

seryh11:01:40

да, под виндой ничего страшного не видно http://clip2net.com/s/3sXkgXe

be911:01:28

так а что страшного в выделении виртуальной памяти-то? что реально роляет, это RSS

turtle11:01:23

htop он показывает так, как автор задумал.

turtle11:01:28

Ну и пугаются люди от этого.

turtle11:01:53

Т.е. перед тем, чтобы htop смотреть, надо посмотреть, что он показывает.

be911:01:43

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

seryh11:01:41

а если на сервере другие приложения есть, они разве могут использовать ту память что себе жаба зарезервировала?

turtle11:01:55

Это как ты выделил себе миллион долларов.

turtle11:01:03

Для удобства расчётов.

be912:01:04

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

be912:01:38

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

be912:01:28

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

be912:01:36

а вот и вездесущий @meow

meow12:01:30

so sorry I do not speak the language

abtv12:01:53

У меня была проблема с jvm: половина памяти сервера свободна, но сильно фрагментирована приложением на c++, и приложение под jvm не стартует - нужен непрерывный кусок не менее скольки-то мегабайт. Кто-нибудь сталкивался с таким?

be912:01:14

-Xms задаёт начальный размер памяти

be912:01:53

может его поприжать?

abtv12:01:39

Мне не хватало 128 мегабайт, а потом жаба будет выделять память как на си - отдельными кусками, а не одним большим? У меня была проблема в том, что есть структуры данных, которые должны вылазить в непрерывный кусок, типа array of long.

be912:01:04

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

be912:01:25

кстати, а что такое "фрагментированная память"?

be912:01:55

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

abtv13:01:39

Приложение на плюсах выделяет память под десятки миллионов объектов и освобождает её в том порядке, который заложен логикой программы. Под виндой))

be913:01:58

ну т.е. физической памяти просто остаётся мало?

abtv13:01:27

Согласно диспетчеру задач - половина свободна)

be913:01:47

в принципе, если объекты сильно разбиты по страницам, то да

be913:01:33

пока в 4-кбайтной странице жив хотя бы один объект, она ОС не отдастся

abtv13:01:06

Ну да, плюсовый код генерирует очень много объектов в куче, большую часть удаляет, но видимо что-то остаётся и не отдаёт страницу обратно ос

abtv13:01:29

Не понятно, почему диспетчер задач показывает половину как свободную

be913:01:04

в общем, мистика. тем более на винде

abtv13:01:49

Ну да, это было полгода назад, не знаю как сейчас, мне даже не верили, что такое бывает)) Решили запуском джавы с параметрами до запуска плюсовой софтины и надеждами, что она не упадёт в процессе)

abtv13:01:40

Если упадёт, то придётся перестартовать плюсовую прогу, что плохо в этом конкретном случае

be913:01:25

как-то плохо на C++ столько объектов создавать. ладно ещё на джаве без этого не обойтись...

be913:01:56

и то на джаве придумывают всякие off-heap storage

abtv13:01:22

Я с unsafe работал и с DirectBuffer, но в таких случаях на плюсах гораздо проще писать

abtv13:01:50

Кстати, а у кого есть хип больше 32 гигабайт, что вы используете? G1?

shinych15:01:50

кто на хероку деплоит, есть вопрос: почему когда я деплою не из master ветки, сборка на хероке не стартует? так всё ок: “git push heroku master”, а так “git push heroku demo-ui-deployment” файлы пушатся, но херока ничего не делает (и даже Procfile не видит, кажется)

larhat15:01:22

Branches pushed to Heroku other than master will be ignored by this command. If you’re working out of another branch locally, you can either merge to master before pushing, or specify that you want to push your local branch to a remote master. To push a branch other than master, use this syntax: $ git push heroku yourbranch:master

shinych15:01:58

О! Спасибо, добрый человек.

dragoncube18:01:12

@rmuslimov: ок, более или менее стало ясно, спасибо