1

(3 відповідей, залишених у JavaScript)

мені здається, що remove() повинно викликатись на екземплярі моделі, типу так

product.remove(function (err, product) {
  product.isDeleted(); // true
  product.remove(); // no-op, doesn't send anything to the db

  product.isDeleted(false);
  product.isDeleted(); // false
  product.remove(); // will execute a remove against the db
})

а зі статичних методів є отаке

Character.deleteOne({ name: 'Eddard Stark' }).then(next)

і таке

A.findOneAndDelete(conditions, callback)

і таке

A.findOneAndRemove(conditions, options)

2

(13 відповідей, залишених у Java)

P.Y. написав:
FakiNyan написав:
P.Y. написав:

Наш світ — це лаба, яку робили криворукі студенти…

ви просто в коді не розібрались, там все прямо зроблене

Наскільки нам відомо, її робили протягом 7 днів перед самою сесією (а мільярди років, відведені на обчислення, замінили підставними значеннями об'єктів), і ще там баг з механізмом завершення, яке мало відбутися ще близько 2000 років тому...

ви більше вірте всяким брошуркам

3

(13 відповідей, залишених у Java)

P.Y. написав:
Kizyak написав:

Реальність це фейк. Ми живемо в матриці суміжності

Наш світ — це лаба, яку робили криворукі студенти…

ви просто в коді не розібрались, там все прямо зроблене

4

(13 відповідей, залишених у JavaScript)

koala написав:

Я ж кажу: кеш файлової системи. Хай ОС сама визначає, скільки файлів треба тримати в пам'яті.

а, то воно вже вбудоване там має бути?

5

(13 відповідей, залишених у JavaScript)

koala написав:

Для цього існує кеш файлової системи. Ви гірше зможете відгадити, який файл треба тримати в пам'яті, а який відпустити.

змоделюємо ситуацію, в нас є 1 юзер
1. юзер завантажує 50 карток
2. ми тримаємо 50 svg в пам'яті, і це буде десь 100кб
3. Юзер перемикає сторінку, і завантажує наступні 50 карток
4. Ми очищаємо кеш, і записуємо в нього нові 50 карток, чи додаємо в нього ще 50 карток (вже 200кб в кеші), а очищаємо кеш лише тоді, коли юзер не робить ніяких запитів певний час?

А якщо юзерів 100?
Створювати для кожного юзера окремий кеш? А якщо тримати все в одному кеші, тоді коли його очищати?
Якщо один юзер завантажує, скажімо, 50 карток, а 99 юзерів не завантажують ці самі 50 карток вже деякий час, то вони ж не очистяться з кешу, а все одно будуть там висіти, і якщо в кожен момент часу якийсь один юзер буде завантажувати певні картки, котрі не завантажують інші користувачі, то може статись, що всі 2000 svg файлів постійно будуть висіти в пам'яті, а це аж 4000кб, хммм, наче, фігня.

Так це тоді треба зберігати кожну картку разом з часовою відміткою, типу, коли юзер завантажував її востаннє, а де перевіряти, чи потрібно її вивантажувати з пам'яті? При кожному запиті будь-якого юзера до будь-якого ендпоінту, котрий може повертати картки?
Я знаю, що в JS є WeakMap, котра очищає значення тоді, коли сміттєзбірник очищає ключі, цю штуку якось можна сюди прикрутити? Щось ніяк не вигадаю, що в цьому випадку буде на місці ключа.. Може якийсь таймер, котрий би очищав сам себе, якщо його не поновлювати? А не забагато ресурсів на таке завдання?

6

(13 відповідей, залишених у JavaScript)

javascriptIsLife написав:

і якщо юзер захоче, наприклад, побачити 50 карток, то це 50 разів треба зчитати файлик, і мені здається, що це неправильно.

Один файл 50 разів? Може 50 файлів?

деякий файл зчитати 50 разів

7

(13 відповідей, залишених у JavaScript)

так оті зайві атрибути містять додаткову інформацію, котра потрібна + таких файликів більше 2000, задовбуся в inkscape кляцати =(

має 100 рази виконатись, я так думаю. (не сто, а саме 100 рази), здогадайтесь, що я маю на увазі, ехехехехе

9

(13 відповідей, залишених у JavaScript)

Прихований текст

<svg xmlns="http://www.w3.org/2000/svg" width="109" height="109" viewBox="0 0 109 109">
<g id="kvg:StrokePaths_0f9a8" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;">
<g id="kvg:0f9a8" kvg:element="令">
    <g id="kvg:0f9a8-g1" kvg:element="人" kvg:position="top" kvg:radical="general">
        <path id="kvg:0f9a8-s1" kvg:type="㇒" d="M49.62,13.25c0.11,0.94,0.38,2.48-0.22,3.77c-4.15,8.86-15.15,25.23-36.65,37.08"/>
        <path id="kvg:0f9a8-s2" kvg:type="㇏" d="M50.54,16.55c6.13,4.35,24.99,20.22,33.98,27.33c3.22,2.54,5.6,4.12,9.73,5.37"/>
    </g>
    <g id="kvg:0f9a8-g2" kvg:position="bottom">
        <g id="kvg:0f9a8-g3" kvg:element="一">
            <path id="kvg:0f9a8-s3"  kvg:type="㇐" d="M 38.590625,42.910833 c 1.76,0.72 3.84,0.36 5.65,0.14 5.4,-0.66 13.08,-1.76 18.48,-2.24 1.88,-0.17 3.54,-0.23 5.37,0.21"/>
        </g>
        <g id="kvg:0f9a8-g4" kvg:element="卩" kvg:original="マ">
            <path id="kvg:0f9a8-s4" kvg:type="㇆" d="M 31.464375,53.641042 c 0.61,0.15 3,1 4.21,0.87 10.329583,-0.937708 28.549375,-2.998125 38.130833,-4.17 1.516086,-0.185427 4.278829,-0.290121 3.95,2.89 -0.431171,4.169879 -2.680149,16.919928 -6,23.84 -1.890149,3.939928 -3.18,3.45 -6.23,0.46"/>
            <path id="kvg:0f9a8-s5" kvg:type="㇑" d="M 44.769166,53.809375 c 0.87,0.87 1.8,2 1.8,3.5 0,7.36 -0.04,24.53 -0.1,34.13 -0.02,3.3 -0.05,5.71 -0.08,6.51"/>
        </g>
    </g>
</g>
</g>
<g id="kvg:StrokeNumbers_0f9a8" style="font-size:8;fill:#808080">
    <text transform="matrix(1 0 0 1 42.50 15.13)">1</text>
    <text transform="matrix(1 0 0 1 58.50 19.63)">2</text>
    <text transform="matrix(1 0 0 1 43 40)">3</text>
    <text transform="matrix(1 0 0 1 25.1 62.1)">4</text>
    <text transform="matrix(1 0 0 1 36.4 65.5)">5</text>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="109" height="109" viewBox="0 0 109 109">
<g id="kvg:StrokePaths_0f9ab" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;">
<g id="kvg:0f9ab" kvg:element="嶺">
    <g id="kvg:0f9ab-g1" kvg:element="山" kvg:position="top" kvg:radical="general">
        <path id="kvg:0f9ab-s1" kvg:type="㇑a" d="M53.26,9.38c0.99,0.99,1.12,2.09,1.12,3.12c0,0.67,0.06,8.38,0.06,13.01"/>
        <path id="kvg:0f9ab-s2" kvg:type="㇄a" d="M26.18,16.75c0.7,1.25,0.79,2.26,0.62,3.41c-0.3,1.97-0.3,2.72-1.34,7.26c-0.34,1.49,0.04,2.56,2.11,2.28c17.56-2.45,35.93-3.95,52.85-4.55"/>
        <path id="kvg:0f9ab-s3" kvg:type="㇑" d="M82.02,12.38c0.6,1.12,0.71,2.48,0.62,3.15c-0.56,4.07-0.77,5.98-1.54,11.69"/>
    </g>
    <g id="kvg:0f9ab-g2" kvg:element="領" kvg:position="bottom">
        <g id="kvg:0f9ab-g3" kvg:element="令" kvg:position="left">
            <g id="kvg:0f9ab-g4" kvg:element="人" kvg:position="top">
                <path id="kvg:0f9ab-s4" kvg:type="㇒" d="M32.5,35.32c0.13,1.47-0.11,2.71-0.65,4.1c-2.08,5.36-8.21,13.8-18.33,22.63"/>
                <path id="kvg:0f9ab-s5" kvg:type="㇔/㇏" d="M35.5,40.03c5,2.22,10.56,6.25,13.42,10.62"/>
            </g>
            <g id="kvg:0f9ab-g5" kvg:position="bottom">
                <g id="kvg:0f9ab-g6" kvg:element="一">
                    <path id="kvg:0f9ab-s6" kvg:type="一" d="M 26.630469,56.071927 c 0.539427,0.436145 1.79625,0.388385 2.697917,0.168385 3.640104,-0.34776 9.632193,-0.873898 11.582344,-0.991042 0.696075,-0.04181 1.609791,-0.05969 2.503073,0.06807"/>
                </g>
                <g id="kvg:0f9ab-g7" kvg:element="卩" kvg:original="マ">
                    <path id="kvg:0f9ab-s7" kvg:type="㇆" d="M 23.386121,64.625299 c 0.61,0.15 1.183333,0.375521 2.393333,0.245521 3.29,-0.37 14.640521,-2.998125 16.160521,-3.148125 1.52,-0.15 4.28,-0.29 3.95,2.89 -0.43,4.17 -2.701526,12.648858 -4.240104,15.778542 -1.24461,2.53171 -2.952917,2.76875 -5.151355,0.573541"/>
                    <path id="kvg:0f9ab-s8" kvg:type="㇑" d="M 29.789454,65.08082 c 0.87,0.87 1.8,2 1.8,3.5 -0.152232,11.364739 0.113303,17.433121 -0.18,27.809787"/>
                </g>
            </g>
        </g>
        <g id="kvg:0f9ab-g8" kvg:element="頁" kvg:position="right">
            <path id="kvg:0f9ab-s9" kvg:type="㇐" d="M53.11,37.57c2.76,0.56,4.86,0.45,6.89,0.23c8.36-0.92,19.1-1.99,26.88-2.56c2.27-0.17,4.24-0.35,7,0.11"/>
            <path id="kvg:0f9ab-s10" kvg:type="㇒" d="M71.3,39.83c0.02,0.33,0.04,0.84-0.04,1.31c-0.34,1.92-1.83,5.44-4.02,8.65"/>
            <g id="kvg:0f9ab-g9" kvg:element="貝">
                <g id="kvg:0f9ab-g10" kvg:element="目" kvg:position="top">
                    <path id="kvg:0f9ab-s11" kvg:type="㇑" d="M58.3,51.19c0.88,0.88,1.09,2.06,1.09,3.51c0,0.82,0,15.36,0,24.54c0,2.97,0,5.38,0,6.58"/>
                    <path id="kvg:0f9ab-s12" kvg:type="㇕a" d="M60.13,52.03c2.5-0.14,21.45-2.48,23.73-2.64c1.9-0.14,3.24,0.74,3.24,2.52c0,2.75,0.01,15.67,0.01,26.84c0,1.89,0,3.72,0,5.46"/>
                    <path id="kvg:0f9ab-s13" kvg:type="㇐a" d="M60.79,62.08c6.53-0.61,19.89-1.83,25.24-2.06"/>
                    <path id="kvg:0f9ab-s14" kvg:type="㇐a" d="M60.54,72.25c7.92-0.78,19.17-1.6,26.01-1.98"/>
                    <path id="kvg:0f9ab-s15" kvg:type="㇐a" d="M60.56,83.48c7.31-0.35,18.56-1.13,25.44-1.37"/>
                </g>
                <g id="kvg:0f9ab-g11" kvg:position="bottom">
                    <path id="kvg:0f9ab-s16" kvg:type="㇒" d="M66.21,89.59c0,1.04-0.45,2.21-1.25,2.83c-3.46,2.71-6.71,4.96-13.36,8.33"/>
                    <path id="kvg:0f9ab-s17" kvg:type="㇔" d="M79.66,88.34c4.79,2.95,10.44,8.3,11.75,10.89"/>
                </g>
            </g>
        </g>
    </g>
</g>
</g>
<g id="kvg:StrokeNumbers_0f9ab" style="font-size:8;fill:#808080">
    <text transform="matrix(1 0 0 1 43.25 9.25)">1</text>
    <text transform="matrix(1 0 0 1 17.25 15.60)">2</text>
    <text transform="matrix(1 0 0 1 72.25 12.60)">3</text>
    <text transform="matrix(1 0 0 1 24.25 39.25)">4</text>
    <text transform="matrix(1 0 0 1 39.25 40.25)">5</text>
    <text transform="matrix(1 0 0 1 29.6 53.4)">6</text>
    <text transform="matrix(1 0 0 1 16.6 70.9)">7</text>
    <text transform="matrix(1 0 0 1 33.7 72.3)">8</text>
    <text transform="matrix(1 0 0 1 51.25 36.25)">9</text>
    <text transform="matrix(1 0 0 1 61.25 44.25)">10</text>
    <text transform="matrix(1 0 0 1 48.2 58.9)">11</text>
    <text transform="matrix(1 0 0 1 58.25 49.75)">12</text>
    <text transform="matrix(1 0 0 1 63.24 59.48)">13</text>
    <text transform="matrix(1 0 0 1 63.09 69.40)">14</text>
    <text transform="matrix(1 0 0 1 63.25 80.33)">15</text>
    <text transform="matrix(1 0 0 1 52.25 93.25)">16</text>
    <text transform="matrix(1 0 0 1 72.25 96.25)">17</text>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="109" height="109" viewBox="0 0 109 109">
<g id="kvg:StrokePaths_0f9ad" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;">
<g id="kvg:0f9ad" kvg:element="玲">
    <g id="kvg:0f9ad-g1" kvg:element="王" kvg:original="玉" kvg:partial="true" kvg:position="left" kvg:radical="general">
        <path id="kvg:0f9ad-s1" kvg:type="㇐" d="M9.65,28.33c1.53,0.84,5.07,0.34,6.71,0.11c4.56-0.63,10.35-1.83,15.79-2.75c1.41-0.24,3.32-0.74,4.74-0.23"/>
        <path id="kvg:0f9ad-s2" kvg:type="㇑a" d="M22.42,30.71c1.06,1.06,1.31,2.04,1.31,3.38c0,4.92,0.04,35.9-0.11,39.17"/>
        <path id="kvg:0f9ad-s3" kvg:type="㇐" d="M10.16,51.37c0.49,0.33,3.93,0.35,4.43,0.31C19,51.25,27.5,49.62,32.44,48.7c0.6-0.11,1.93-0.32,3.25-0.09"/>
        <path id="kvg:0f9ad-s4" kvg:type="㇐" d="M10.77,78.95c1.03,0.83,2.01,1.11,3.51,0.33c5.6-2.9,10.93-6,18-9.92"/>
    </g>
    <g id="kvg:0f9ad-g2" kvg:element="令" kvg:position="right">
        <g id="kvg:0f9ad-g3" kvg:element="人" kvg:position="top">
            <path id="kvg:0f9ad-s5" kvg:type="㇒" d="M62.64,12.75c0.08,0.95,0.13,2.52-0.4,3.83C58.5,25.88,50.38,41.12,39,52.35"/>
            <path id="kvg:0f9ad-s6" kvg:type="㇏" d="M62.92,17.79c8.4,8.61,15.21,17.33,24.47,26.71c2.09,2.12,5.1,4.24,7.37,5.63"/>
        </g>
        <g id="kvg:0f9ad-g4" kvg:position="bottom">
            <g id="kvg:0f9ad-g5" kvg:element="一">
                <path id="kvg:0f9ad-s7" kvg:type="㇐" d="M50.9,46.1c1.76,0.72,3.84,0.36,5.65,0.14c5.4-0.66,13.08-1.76,18.48-2.24c1.88-0.17,3.54-0.23,5.37,0.21"/>
            </g>
            <g id="kvg:0f9ad-g6" kvg:element="卩" kvg:original="マ">
                <path id="kvg:0f9ad-s8" kvg:type="㇆" d="M51.4,54.6c0.61,0.15,3,1,4.21,0.87c3.29-0.37,17.99-4.02,19.51-4.17c1.52-0.15,4.28-0.29,3.95,2.89c-0.43,4.17-2.68,16.92-6,23.84c-1.89,3.94-3.18,3.45-6.23,0.46"/>
                <path id="kvg:0f9ad-s9" kvg:type="㇑" d="M58.58125,55.567708 c 0.87,0.87 1.8,2 1.8,3.5 -0.219826,13.545146 0.202719,23.466557 -0.18,37.006667"/>
            </g>
        </g>
    </g>
</g>
</g>
<g id="kvg:StrokeNumbers_0f9ad" style="font-size:8;fill:#808080">
    <text transform="matrix(1 0 0 1 3.60 28.25)">1</text>
    <text transform="matrix(1 0 0 1 15.25 39.25)">2</text>
    <text transform="matrix(1 0 0 1 3.25 52.25)">3</text>
    <text transform="matrix(1 0 0 1 3.25 81.25)">4</text>
    <text transform="matrix(1 0 0 1 54.25 15.25)">5</text>
    <text transform="matrix(1 0 0 1 69.25 22.25)">6</text>
    <text transform="matrix(1 0 0 1 53.7 44)">7</text>
    <text transform="matrix(1 0 0 1 44.6 58.1)">8</text>
    <text transform="matrix(1 0 0 1 62.5 63)">9</text>
</g>
</svg>

осьо декілька

Хай, не знаю, як краще організувати відображення SVG файлу разом з даними користувача.

Дано:
Angular додаток, в котрому користувач може створювати картки.
Картка може містити різну інформацію, і одне з полів картки може бути ієрогліфом, типу такого 私.
Коли картка відправляється на сервер, то вона зберігається в mongodb, і потім користувач може отримати дані про всі картки, або про якусь одну картку.
На стороні сервера є директорія з SVG файлами, імена котрих відповідають шістнадцятковому коду певного ієрогліфа. Наприклад, аби знайти файл для ієрогліфа 私, треба зробити тако

'私'.charCodeAt(0).toString(16)

і отримаємо - 79c1, тепер ще треба додати 0 зпереду, аби було 079c1, і тоді ім'я SVG  файлу буде - 079c1.svg

Необхідно:
Коли юзер хоче отримати інформацію про картку, або картки, я б хотів додати до об'єкту "картка" поле, котре б містило svg файл, в текстовому вигляді, звісно ж.

Проблема - подібні дії вимагають роботу з файловою системою на стороні серверу, і якщо юзер захоче, наприклад, побачити 50 карток, то це 50 разів треба зчитати файлик, і мені здається, що це неправильно.

Так можна робити? Чи це таки криво, і можна це все зробити краще з точки зору швидкодії?

допоміг тому ж самому українському стрімеру, і закинув офіційному волонтеру АТО (але ж тепер АТО типу не АТО, так що волонтеру ЗСУ, чи як?)

а що саме вам не зрозуміло? розкажіть все, що ви знаєте про структури даних, та й все

13

(8 644 відповідей, залишених у Інше)

/KIT\ написав:

Де логіка?
http://picua.org/img/2018-05/20/fdcreogui1od5xvtf1z25qm6x.png

єдімий нарот же ж

14

(45 відповідей, залишених у C/C++)

а нащо воно тре, і яка різниця, що з ним, а що без нього?

15

(45 відповідей, залишених у C/C++)

Fox написав:
FakiNyan написав:
/KIT\ написав:

то ви про #include "stdafx.h"?

так

Так я не юзаю його.
Я створив пустий проект i в ньому файл main.cpp а там точку входу main

і працює?

16

(45 відповідей, залишених у C/C++)

/KIT\ написав:
FakiNyan написав:
0x9111A написав:

MSVC взагалі то найкраща IDE для C/C++, мені її дуже не вистачає на лінупсі.
Тху ти, це не про IDE. Треба йти додомцю відпочивати

чим це вона краща? хіба там не тре інклудити якусь специфічну фігню, і юзати ще якісь незрозумілі макроси, чи якось так?

то ви про #include "stdafx.h"?

так

17

(45 відповідей, залишених у C/C++)

0x9111A написав:
FakiNyan написав:

ну, нічого страшного, просто до вас будуть відноситись, як до другосортної людини..

MSVC взагалі то найкраща IDE для C/C++, мені її дуже не вистачає на лінупсі.
Тху ти, це не про IDE. Треба йти додомцю відпочивати

чим це вона краща? хіба там не тре інклудити якусь специфічну фігню, і юзати ще якісь незрозумілі макроси, чи якось так?

18

(45 відповідей, залишених у C/C++)

Fox написав:
Kizyak написав:
Прихований текст

Fox написав:

Хм... Ви просто забили а тут треба термiново написати чи просто не зрозумiли ?

PS:
https://i.imgur.com/EhJGLHJ.png

Кiт

#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <climits>

using namespace std;
typedef void(*FOR_FUNC)(int** matrix, int x, int y);
struct MATRIX {
    int** data;
    int size_x;
    int size_y;
};
struct MATRIX_POSITION {
    int x, y;
};

void matrix_init(MATRIX* matrix, int msize_x, int msize_y)
{
    cout << "[DEBUG] matrix init [" << msize_x << ", " << msize_y << "]" << endl;
    matrix->data = new int*[msize_x];
    for (int i = 0; i < msize_x; i++)
        matrix->data[i] = new int[msize_y];
    matrix->size_x = msize_x;
    matrix->size_y = msize_y;
}

void matrix_foreach(MATRIX matrix, FOR_FUNC func)
{
    cout << "[DEBUG] call matrix_foreach" << endl;
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            func(matrix.data, x, y);
        }
    }
}

void matrix_randomize(MATRIX matrix)
{
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        int random = -10 + (rand() % static_cast<int>(10 + 10 + 1));
        matrix[x][y] = random;
    });
}

void matrix_make(MATRIX matrix, int start)
{
    static int idx = start;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        matrix[x][y] = idx;
        idx++;
    });
}

void matrix_change(MATRIX matrix, MATRIX_POSITION a, MATRIX_POSITION b)
{
    int buf = matrix.data[a.x][a.y];
    matrix.data[a.x][a.y] = matrix.data[b.x][b.y];
    matrix.data[b.x][b.y] = buf;
}

void matrix_print(MATRIX matrix)
{
    for (size_t y = 0; y < matrix.size_y; y++)
    {
        for (size_t x = 0; x < matrix.size_x; x++)
        {
            cout << setw(5) <<  matrix.data[x][y] << " ";
        }
        cout << endl;
    }
}

MATRIX_POSITION matrix_getmax(MATRIX matrix)
{
    static int buff = INT_MIN;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] > buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}

MATRIX_POSITION matrix_getmin(MATRIX matrix)
{
    static int buff = INT_MAX;
    static MATRIX_POSITION pos;
    matrix_foreach(matrix, [](int** matrix, int x, int y)
    {
        if (matrix[x][y] < buff)
        {
            buff = matrix[x][y];
            pos.x = x;
            pos.y = y;
        }
    });
    return pos;
}

Готовий кiт

Може самi ?

Ну добре...

Але без ctrl+V

https://i.imgur.com/SFyQdKe.png

Зберете такий конструктор ?)

Прихований текст

Дуже схоже, що ви використовуєте MS VC++.

I що?

Прихований текст
ну, нічого страшного, просто до вас будуть відноситись, як до другосортної людини..

19

(26 відповідей, залишених у Android/iOS, програмування для мобільних пристроїв)

здорів

20

(2 відповідей, залишених у Статті)

а між тим, було б непогано намутити купу міні-статтей, де б вирішувались типові студентські завдання *SCRATCH*  тоді б можна було відправляти їх в той розділ