Цитата:
Цитата:
Цитата:
в общем, порешил дело! отрефакторил функцию, вынесев ввод\вывод (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) не вижу смысла, т.к. это обёрнутые вызовы библиотечных\встроенных функций |
Немного угарнул
есть инструмент для оценки покрытия кода при тестах - istanbul на его странице есть обьяснение, почему именно такое имя у проекта Цитата:
Цитата:
|
у всех оракловые дистрибутивы качаются чересчур медленно или только у меня?
начинает шустро, потом скорость резко снижается, дистрибутивы немаленькие , а у них ещё хитрожопо так сделано, что непонятно как ссылку извлечь, чтобы хотя бы её в download master передать в связи с этим, пока не знаю, когда удастся развернуть тестовую среду, поэтому условно вопрос до понедельника (так как на работе уже всё развёрнуто :)): напомните, пожалуйста, можно ли в оракловой базе данных через табличку dba_users или каким-либо другим способом проверить может ли пользователь коннектиться к этой базе путём сравнения его логина и пароля? В самой dba_users пароль в поле PASSWORD хранится в зашифрованном виде, есть ли способы сделать корректное сравнение или нет, это я и хочу выяснить. может быть есть какие-то другие механизмы такой проверки, но они мне неизвестны в качестве сервера приложений - weblogic, там заведён data source, который создаёт пул соединений под определённым пользователем задача - проверить могут ли обратившиеся к серверу приложений другие пользователи, которые предоставляют свой логин и пароль, коннектиться к базе данных сейчас уже есть рабочий вариант, который кажется слишком топорным: сделать попытку соединения, если удастся, то может думается, что всё должно быть гораздо проще :yes: |
похоже ответ найден
http://laurentschneider.com/wordpres...spassword.html Цитата:
хз как лучше провернуть авторизацию в этом случае, не делая попытку прямого коннекта под пользователем: пользователи уже могут авторизоваться под собой, но ходим не под ними, а под определённой учётной записью с определёнными правами, которая доступна через data source на сервере приложений, на основе её возможностей и нужно проверить, может ли пользователь ходить в базу или нет кто-нибудь пытался когда-нибудь решить подобную задачу? |
Народ, нужна помощь с
Пробовал boot.ini редактировать , но фиг там... |
Цитата:
|
Цитата:
Нужна утилита которая установит нужный раздел системным так как загрузчик не там ищет винду |
Цитата:
Цитата:
начиная с 01BEh идут записи таблицы разделов, ставишь в нужной записи (например в байте 1BEh, что соответствует первому разделу) значение 80h, в начале других записей (01CEh, 01DEh, 01EEh), должны быть нули по 4 байта в конце каждой записи - смещение и количество секторов по lba, смотришь первую запись (если выбрал активным первый раздел), идёшь на адрес, соответствующий первому из этих 4 байтных чиcел (в hxd это ctrl+g, оно же меню Поиск - Перейти ) и смотришь, если там что-нибудь, по идее, именно с этого адреса должен начинаться код Цитата:
здесь есть полезные утилиты 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 |
Цитата:
http://thestarman.narod.ru/asm/mbr/Win2kmbr.htm но, по-моему, нужно просто забрать данные с диска и дать xp спокойно умереть :) |
bes, спасибо)
Цитата:
|
| Часовой пояс GMT +3, время: 08:05. |