Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Обсуждений тред (https://javascript.ru/forum/offtopic/47364-obsuzhdenijj-tred.html)

Gozar 02.02.2015 14:17

Цитата:

Сообщение от melky
import React from 'react'

Ты делаешь импорт или это прикол? Я подключаю отдельно на страницу.

melky 02.02.2015 14:23

Цитата:

Сообщение от Gozar (Сообщение 354604)
Ты делаешь импорт или это прикол? Я подключаю отдельно на страницу.

делаю импорт. график зависимостей (сделал через webpack):
выделен сам React (чёрная точка) и модули, откуда я его импортирую (красные точки)

nerv_ 02.02.2015 15:24

Цитата:

Сообщение от Zend
Если хочется быть чуть ближе к ES6 возьмите и запилите то что можно запилить через прототип. Т.е. встроенные классы расширьте (типа Array.prototype.крутой_метод_из_бу �ущего), а class я бы пока оставил.

Я брал ES6 из-за class, extends, super и тому подобных фич, ибо очень неочевидный код получается на es5.

Цитата:

Сообщение от melky
import React from 'react'


аминь

аминь https://yadi.sk/i/yaZUUcMneQgbx Эт только один модуль)

melky 02.02.2015 16:04

Цитата:

Сообщение от nerv_ (Сообщение 354623)
Я брал ES6 из-за class, extends, super и тому подобных фич, ибо очень неочевидный код получается на es5.


аминь https://yadi.sk/i/yaZUUcMneQgbx Эт только один модуль)

ты же webpack используешь?

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

для этого надо дописать к массиву плагинов webpack следующий плагин:
function() {
      this.plugin("done", function(stats) {
        require("fs").writeFileSync(
          path.join(__dirname, "stats.json"),
          JSON.stringify(stats.toJson()));
      });
    }


и собрать проект. после сборки появится файл stats.json. можно его сюда (на ядиск)?)

Gozar 02.02.2015 19:37

Цитата:

Сообщение от melky
делаю импорт.

А почему не в head?

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

У меня кстати webpack ругается если я пытаюсь подключить react.min.js, warning: Вижу я что-то непонятное...

melky 02.02.2015 21:04

Цитата:

Сообщение от Gozar
А почему не в head?

нужна версия для разработки
Цитата:

Сообщение от Gozar
Если пересобирать проект, то грузить придется вместе с React каждый раз?

я пишу код с включенным Hot Load, так что все библиотеки грузятся один раз
Цитата:

Сообщение от Gozar
Нельзя разбить сайт на страницы и подключать нужную часть. Если приложение SPA тогда наверное можно и забить, а вот если не SPA...

угу, SPA :)
Цитата:

Сообщение от Gozar
У меня кстати webpack ругается если я пытаюсь подключить react.min.js, warning: Вижу я что-то непонятное...

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

Zend 03.02.2015 12:05

Посаны а вы ES6 через webpack мутите?

Я попробовал просто
require("6to5/register");
require('./test.es6');


Ну и оно вроде норм.

Мне для бэкэнда только нужно. Имеет ли смысл компилить? Для дебага разве что.

melky 03.02.2015 13:17

Цитата:

Сообщение от Zend (Сообщение 354719)
Посаны а вы ES6 через webpack мутите?

Я попробовал просто
require("6to5/register");
require('./test.es6');


Ну и оно вроде норм.

Мне для бэкэнда только нужно. Имеет ли смысл компилить? Для дебага разве что.

у меня на бекенде enhanced-require, там же компилер 6to5.

но вообще, достаточно и register

Zend 03.02.2015 13:37

Цитата:

Сообщение от melky
но вообще, достаточно и register

Меня интересует вопрос дебага. Я боюсь что не удобно будет с преобразованием на лету. Грант не хочется туда лепить. Для фронтенда вроде как webpack сейчас очень модено, но годится ли он для бэкэнда? Точнее имеет ли смысл его прокручивать только ради компиляции es6. Или он ещё чем то сможет быть мне полезен на бэкэнде. Как вообще лучше всё организовать?

nerv_ 03.02.2015 15:10

Переписываю на es6 часть проекта, забавно выглядит фрагмент
было
/**
 * Resets dialog
 * @param {Array<Number>} edited
 */
EditingMultipleDialog.prototype.reset = function(edited) {
    EditingMultipleDialog.super_.prototype.reset.call(this);
    Array.prototype.push.apply(this.edited, edited);
};

стало
/**
 * Resets dialog
 * @param {Array<Number>} edited
 */
reset(edited) {
    super.reset();
    this.edited.push(...edited);
}

:)

Цитата:

Сообщение от melky
ты же webpack используешь?

пока на уровне мартышки :D

Цитата:

Сообщение от melky
для этого надо дописать к массиву плагинов webpack

у меня нет пока там плагинов)

bes 03.02.2015 21:23

вероятно перетрудился сёрфить за ближайшие дни, что сегодня закипел, не выдержал и написал в службу поддержки
написал в культурной форме, но на душе была эта картинка :)
<img src="http://i9.pixs.ru/storage/5/3/7/asdfpng_9083796_15889537.png" style="width:100%"/>


PS: этот всплывающий блок всем не нравится или в нём есть что-то полезное?
может кто посодействует, чтобы его хотя бы в другое место пристроили

nerv_ 04.02.2015 11:55

Только что узнал, что Firebug в FF не поддерживает sourcemap. Улыбнуло :) Отключил плагин, нативный отладчик лисы поддерживает.

Кто-нибудь в курсе, планируется ли в Firebug поддержка sourcemap и будет ли вообще развиваться Firebug? (на первый взгляд, не совсем понятно, зачем он нужен если есть нативный отладчик)

melky 04.02.2015 12:02

Цитата:

Сообщение от nerv_ (Сообщение 354856)
Только что узнал, что Firebug в FF не поддерживает sourcemap. Улыбнуло :) Отключил плагин, нативный отладчик лисы поддерживает.

Кто-нибудь в курсе, планируется ли в Firebug поддержка sourcemap и будет ли вообще развиваться Firebug? (на первый взгляд, не совсем понятно, зачем он нужен если есть нативный отладчик)

он был нужен, когда отладчика не было. сейчас он есть.

firebug уже вроде и не поддерживается, нет?

nerv_ 04.02.2015 13:30

Цитата:

Сообщение от melky
firebug уже вроде и не поддерживается, нет?

любопытства ради загуглил . Написано, что последний релиз от вчера (2015-02-03)

Octane 04.02.2015 13:37

Цитата:

Сообщение от nerv_
Кто-нибудь в курсе, планируется ли в Firebug поддержка sourcemap и будет ли вообще развиваться Firebug? (на первый взгляд, не совсем понятно, зачем он нужен если есть нативный отладчик)

Цитата:

Сообщение от Firebug 3 – next generation of Firebug
The product has always been an extension and the natural direction is to build the next Firebug generation on top of the existing developer tools in Firefox – and extend them. So, the next step is tight integration with the existing Firefox platform. This way Firebug also gets significant performance, stability and security advantages. Firebug will complement the Firefox Developer Tools by adding new functionality – not by competing with them.

https://blog.getfirebug.com/2014/11/...on-of-firebug/

насколько я понял, 3й фаербаг будет дополнением к стандартным девтулзам

nerv_ 04.02.2015 13:53

Octane, спасибо

melky 04.02.2015 19:55

Цитата:

Сообщение от Octane (Сообщение 354920)

О_О

ОХ-ТЬ, точно!

какие за\против такого подхода? интересует производительность

melky 04.02.2015 21:54

у меня есть функция:
/** Скачает изображение по ссылке, сохранит в папку */
exports.downloadImage = function (imageURL) {
  return new Promise(function (res, rej) {

    var ext = path.extname(imageURL);
    var imageName = utils.getImageName(imageURL);
    var dest = path.join(imageSavePath, imageName);

    var file = fs.createWriteStream(dest);

    /** @type {Object} RESOLVE ARGUMENT */
    var info = {imageURL: imageURL, dest: dest, ext: ext, imageName: imageName};

    var request = http.get(imageURL, function (response) {
        response.pipe(file);
        file.on('finish', function () {
            file.close(function () {
              res(info);
            });
        });
        file.on('error', function (err) {
            fs.unlinkSync(dest);
            rej(err);
        });
    });

  });
};

которая качает картинку из инета и сохраняет её на диск.

я написал такой тест к ней:
describe('downloadImage', function () {
    it('should download image by url', function () {
      return utils.
        downloadImage('http://i.imgur.com/emZNv0N.jpg').
        then(function (info) {
          fs.unlinkSync(info.dest);
          return Promise.resolve(info);
        }).
        should.eventually.
        include({imageURL: 'http://i.imgur.com/emZNv0N.jpg', ext: '.jpg'}).
        and.property('imageName').match(/^product-image-/);
    });
  });


всё хорошо, но тест выполняется 600 мс :(

вопрос - как подменить модуль http или вообще её переписать, чтобы можно было не скачивать изображение при тестировании?

Gozar 04.02.2015 22:02

Цитата:

Сообщение от melky
как подменить модуль http или вообще её переписать, чтобы можно было не скачивать изображение при тестировании?

Запрашивай заголовки, если по заголовкам картинка, качаешь, если "фига" то нет.

Zend 04.02.2015 22:51

Цитата:

Сообщение от melky
чтобы можно было не скачивать изображение при тестировании

а что если найдётся какой то баг при котором картинка не сохраняется?

кстати я не вижу смысла в этом тесте так как там нет done().

по моему должно быть так:
- ждёшь завершения асинхронных штук
- в колбэке проверяешь то что тебе нужно
- вызываешь done()
ещё не плохо время контролировать, за которое тест должен выполниться

не хочешь ждать, уверен что там всё ок - отключи его, добавь "x":
xit('......

кстати чем тестируешь? mocha?

melky 04.02.2015 23:16

Цитата:

Сообщение от Gozar (Сообщение 354984)
Запрашивай заголовки, если по заголовкам картинка, качаешь, если "фига" то нет.

хотелось бы вообще убрать HTTP из теста...
Цитата:

Сообщение от Zend (Сообщение 354998)
кстати я не вижу смысла в этом тесте так как там нет done().

там возвращается Promise.

Цитата:

Сообщение от Zend (Сообщение 354998)
по моему должно быть так:
- ждёшь завершения асинхронных штук
- в колбэке проверяешь то что тебе нужно
- вызываешь done()
ещё не плохо время контролировать, за которое тест должен выполниться

не хочешь ждать, уверен что там всё ок - отключи его, добавь "x":
xit('......

кстати чем тестируешь? mocha?

да, mocha. и с ней chai с плагинами


в общем, порешил дело! отрефакторил функцию, вынесев ввод\вывод (HTTP запрос и запись в файл) в отдельные 2 функции:
/** Скачает изображение по ссылке, сохранит в папку */
exports.downloadImage = function (imageURL) {
  var ext = path.extname(imageURL);
  var imageName = utils.getImageName(imageURL);
  var dest = path.join(imageSavePath, imageName);

  /** @type {Object} RESOLVE ARGUMENT */
  var info = {imageURL: imageURL, dest: dest, ext: ext, imageName: imageName};

  return exports.downloadImage.request(imageURL).
    then(function (buffer) {
      return exports.downloadImage.write(dest, buffer);
    }).
    return(info);
};

// Скачает ответ по ссылке и вернёт результат в формате буфера
exports.downloadImage.request = function (url) {
  return request({url: url, encoding: null}).get(1);
};

// Запишет буфер buffer в файл dest
exports.downloadImage.write = function (dest, buffer) {
  return fs.writeFileAsync(dest, buffer);
};

( request - это var request = Promise.promisify(require('request')); )

ну и в тестах сделал подмену на эти две функции (request и write)
describe('downloadImage', function () {

    var original = {};
    var url = 'http://i.imgur.com/emZNv0N.jpg';
    var buffer = new Buffer('Hello');

    var fakeRequest = sinon.stub().withArgs(url).returns(Promise.resolve(buffer));

    var fakeWrite = sinon.stub().returns(Promise.resolve());

    beforeEach(function () {
      original.request = utils.downloadImage.request;
      original.write = utils.downloadImage.write;
      utils.downloadImage.request = fakeRequest;
    });

    afterEach(function () {
      utils.downloadImage.request = original.request;
      utils.downloadImage.write = original.write;
    });

    it('should download image by url', function () {
      return utils.
        downloadImage('http://i.imgur.com/emZNv0N.jpg').
        should.eventually.
        include({imageURL: 'http://i.imgur.com/emZNv0N.jpg', ext: '.jpg'}).
        and.property('imageName').match(/^product-image-/);
    });
  });


как видите, сам тест (внутри 'it') остался таким же, как и поведение самой функции. успех!

тестировать её помощников (request и write) не вижу смысла, т.к. это обёрнутые вызовы библиотечных\встроенных функций

melky 06.02.2015 12:41

Немного угарнул
есть инструмент для оценки покрытия кода при тестах - istanbul
на его странице есть обьяснение, почему именно такое имя у проекта
Цитата:

Why the funky name?

Since all the good ones are taken. Comes from the loose association of ideas across coverage, carpet-area coverage, the country that makes good carpets and so on...
По русски:
Цитата:

Чего такое классное имя?

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

bes 07.02.2015 10:53

у всех оракловые дистрибутивы качаются чересчур медленно или только у меня?
начинает шустро, потом скорость резко снижается, дистрибутивы немаленькие , а у них ещё хитрожопо так сделано, что непонятно как ссылку извлечь, чтобы хотя бы её в download master передать

в связи с этим, пока не знаю, когда удастся развернуть тестовую среду, поэтому условно вопрос до понедельника (так как на работе уже всё развёрнуто :)):
напомните, пожалуйста, можно ли в оракловой базе данных через табличку dba_users или каким-либо другим способом проверить может ли пользователь коннектиться к этой базе путём сравнения его логина и пароля?
В самой dba_users пароль в поле PASSWORD хранится в зашифрованном виде, есть ли способы сделать корректное сравнение или нет, это я и хочу выяснить.
может быть есть какие-то другие механизмы такой проверки, но они мне неизвестны

в качестве сервера приложений - weblogic, там заведён data source, который создаёт пул соединений под определённым пользователем
задача - проверить могут ли обратившиеся к серверу приложений другие пользователи, которые предоставляют свой логин и пароль, коннектиться к базе данных

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

bes 07.02.2015 12:13

похоже ответ найден
http://laurentschneider.com/wordpres...spassword.html
Цитата:

the password is not longer displayed in dba_users.password in 11g

select username,password
from dba_users
where username='SCOTT';
USERNAME PASSWORD
-------- ------------------------------
SCOTT

select name,password
from sys.user$
where name='SCOTT';
NAME PASSWORD
----- ------------------------------
SCOTT F894844C34402B67
хотя не думаю, что разумно предоставлять стороннему приложению доступ лазать в sys.user$, да и в dba_users тоже, вероятно и не согласятся на это

хз как лучше провернуть авторизацию в этом случае, не делая попытку прямого коннекта под пользователем: пользователи уже могут авторизоваться под собой, но ходим не под ними, а под определённой учётной записью с определёнными правами, которая доступна через data source на сервере приложений, на основе её возможностей и нужно проверить, может ли пользователь ходить в базу или нет
кто-нибудь пытался когда-нибудь решить подобную задачу?

cyber 10.02.2015 14:25

Народ, нужна помощь с адской ос виндой xp , на ноут установлена xp но при загрузки не видит Винду на диске, как настроить вмндовый загрузчик ?
Пробовал boot.ini редактировать , но фиг там...

melky 10.02.2015 17:16

Цитата:

Сообщение от cyber (Сообщение 355965)
Народ, нужна помощь с адской ос виндой xp , на ноут установлена xp но при загрузки не видит Винду на диске, как настроить вмндовый загрузчик ?
Пробовал boot.ini редактировать , но фиг там...

в msconfig есть что-нибудь интересное?

cyber 10.02.2015 20:57

Цитата:

Сообщение от melky
в msconfig есть что-нибудь интересное?

Не, на сколько я понял когда я удалил старый системный раздел( так как при установке xp его нужно сначала удалить) то основным оно сделало 2й раздел, и поэтому старый диск Д, теперь диск С.
Нужна утилита которая установит нужный раздел системным так как загрузчик не там ищет винду

bes 10.02.2015 21:31

Цитата:

Сообщение от cyber
Не, на сколько я понял когда я удалил старый системный раздел( так как при установке xp его нужно сначала удалить) то основным оно сделало 2й раздел, и поэтому старый диск Д, теперь диск С.
Нужна утилита которая установит нужный раздел системным так как загрузчик не там ищет винду

mbr
Цитата:

0000h 446 Код загрузчика
01BEh 64 Таблица разделов
16 Раздел 1
01CEh 16 Раздел 2
01DEh 16 Раздел 3
01EEh 16 Раздел 4
01FEh 2 Сигнатура (55h AAh)
открываешь в hex-редакторе жёсткий диск, смотришь первый сектор,
начиная с 01BEh идут записи таблицы разделов, ставишь в нужной записи (например в байте 1BEh, что соответствует первому разделу) значение 80h,
в начале других записей (01CEh, 01DEh, 01EEh), должны быть нули


по 4 байта в конце каждой записи - смещение и количество секторов по lba, смотришь первую запись (если выбрал активным первый раздел), идёшь на адрес, соответствующий первому из этих 4 байтных чиcел (в hxd это ctrl+g, оно же меню Поиск - Перейти ) и смотришь, если там что-нибудь, по идее, именно с этого адреса должен начинаться код
Цитата:

Структура описания раздела
Смещение Длина Описание
00h 1 Признак активности раздела
01h 1 Начало раздела — головка
02h 1 Начало раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
03h 1 Начало раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
04h 1 Код типа раздела
05h 1 Конец раздела — головка
06h 1 Конец раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
07h 1 Конец раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
08h 4 Смещение первого сектора
0Ch 4 Количество секторов раздела
если не получается, анализируешь дальше :)
здесь есть полезные утилиты
http://ntfs.com/

вот ещё один бесплатный hex-редактор
http://mh-nexus.de/en/hxd/
ftp://wa651f3:anonymous@mh-nexus.de/HxDSetupPTB.zip
http://mh-nexus.de/downloads/HxDSetupRU.zip

bes 10.02.2015 21:40

Цитата:

Сообщение от bes

здесь кстати есть линк, где подробно расписано
http://thestarman.narod.ru/asm/mbr/Win2kmbr.htm

но, по-моему, нужно просто забрать данные с диска и дать xp спокойно умереть :)

cyber 11.02.2015 13:42

bes, спасибо)
Цитата:

Сообщение от bes
но, по-моему, нужно просто забрать данные с диска и дать xp спокойно умереть

Да я бы этот ноут об стену закрыл раз и навсегда, но ксожеленью...

nerv_ 12.02.2015 20:15

Ничего не понимаю :) Читал статью В России повторили эксперимент Андреа Росси, в которой черным по белому написано
Цитата:

На семинаре кандидат физико-математических наук Александр Пархомов представил результаты собственных экспериментов с LENR, в ходе которых примитивная копия реактора Росси смогла выработать в 2,5 раза больше энергии, чем потребила
Получается, что КПД >1. Такого же не бывает. Или я чего-то не понимаю?

melky 12.02.2015 20:27

Цитата:

Сообщение от Gozar (Сообщение 356423)
Сорри за оффтоп, сотру потом.

А что в nodejs используют вместо sync или его уже где-то добавили?

не понял)

Gozar 12.02.2015 22:52

Цитата:

Сообщение от melky
не понял)

Это я немного туплю. Не выспался. Пытаюсь понять как работают генераторы в nodejs и работают ли вообще.

melky 12.02.2015 23:13

Цитата:

Сообщение от Gozar (Сообщение 356450)
Это я немного туплю. Не выспался. Пытаюсь понять как работают генераторы в nodejs и работают ли вообще.

завидую, я пока до них не дошел - всё с Promise колдую

kobezzza 13.02.2015 07:39

Цитата:

Сообщение от Gozar (Сообщение 356450)
Это я немного туплю. Не выспался. Пытаюсь понять как работают генераторы в nodejs и работают ли вообще.

Работают начиная с 0.11 версии, но нужно запускать ноду с флагом --harmony, т.е.

node --harmony ...

Gozar 13.02.2015 12:26

Цитата:

Сообщение от kobezzza
начиная с 0.11 версии

Спасибо, переключился на 0.12.

Цитата:

Сообщение от kobezzza
node --harmony

Я без этого флага ещё ни разу не запускал :)

nerv_ 20.02.2015 16:55

Цитата:

Сообщение от melky
Перевод io.js на русский язык

никто не желает помочь?

Любопытно, с каких пор camelCase ушел из яваскрипта?
https://iojs.org/api/os.html#os_os_totalmem
и дальше по списку

Safort 20.02.2015 17:51

kobezzza,
не подскажешь как ты используешь разные Node под виндой? Хотел установить n или nvm а оно отсутствует под винду. Или ты не заморачивался и просто ставил 0.11, а потом 0.12?

melky 20.02.2015 19:31

Цитата:

Сообщение от Safort (Сообщение 357554)
kobezzza,
не подскажешь как ты используешь разные Node под виндой? Хотел установить n или nvm а оно отсутствует под винду. Или ты не заморачивался и просто ставил 0.11, а потом 0.12?

я хоть и не кобеза, но посмею посоветовать https://github.com/hakobera/nvmw

но лучше вообще не использовать node под виндой... вообще.

Safort 20.02.2015 19:37

melky,
Цитата:

я хоть и не кобеза, но посмею посоветовать https://github.com/hakobera/nvmw
Спасибо.

Цитата:

но лучше вообще не использовать node под виндой... вообще.
Я уже однажды сломал себе Убунту и остался один на один с терминалом. Терминал победил.


Часовой пояс GMT +3, время: 09:14.