Сейчас столько всего напроектировали, что уже можно спокойно брать и писать довольно сложное приложение без забивания головы проектированием.
Бывает конечно исключение, но они и команду требуют с ведущим прогером, который и построит всю архитектуру. |
sheburshalo, по работал 3 месяца в фирме где проект разрабатывали по такому принципу, взяли фраэмворк и понеслась, больше не хочу)
|
sheburshalo, а вообще я хочу на работу в гугл, через 2 года буду туда подавать резюме, поэтому нужно хорошо прокачать скил)
|
Цитата:
|
Цитата:
А почему только через 2 года? |
Цитата:
|
Цитата:
Можно просто ссылку на dev-версию кодов, репозиторий-проектов и тд. |
join, мы работает под бизнес сектор банки и все такое, у нас нет опен соурс и я подписал условие о не разглошение)
Максимум могу дать ссылку на компанию и название проекта) |
Не могу найти как через wireshark, фильровать по файлам например что бы остались только js файлы в списке ?
|
Мне стало интересно как можно скомпилить js в c++ ?)
|
Цитата:
|
bes, а ссылочку можно?)
|
Цитата:
в чём смысл затеи? |
Цитата:
Ребзя, а кто-нибудь из вас сталкивался с статистикой открытых ИП в 2014-2015 или 2015 онли (ведь скоро уже 2016)? |
Во! Мож кому пригодится
https://www.nalog.ru/rn26/related_ac...tics/regstats/ |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Есть либа она выполняется синхронно, мне не важно что она вернет и все такое. Мне просто нужно вызвать ее и передать параметр
require( "lib" ).method ( param ); но она блокирует выполнение кода, как это можно выполнить асинхронно, я знаю что на ноде нет потоков как таковых но может есть хак? |
Цитата:
|
l-liava-l,
сенк попробую |
Как описать в jsdoc параметрический полиморфизм конструктора? А именно, то что он может вызываться следующим образом:
new Point( {x: {Number}, y: {Number}}.<Point> ); // передается другой экземпляр {Point}
new Point( [x {Number}, y {Number}].<Array> ); // массив с координатами
new Point( x {Number}, y {Number} ); // координаты
? |
nerv_,
/**
*
* @param {(number|Point|number[])} paramOrX
* @param {number} [y]
* @constructor
*/
function Point(paramOrX, y) {
}
Хотя, как по мне, правильнее будет выбрать что-то одно -- я бы предпочел два параметра, x и y, тогда проблему с массивами решаем через new Point(...[x, y]), а для других Point'ов заведи статик метод типа Point.fromPoint(point) или метод clone в прототипе. |
nerv_, @variation
|
Цитата:
'use strict';
export default class Point {
/**
* @param {Point|Array<Number>} some
*/
constructor(...some) {
let [x, y] = Point.factory(some);
this.x = x;
this.y = y;
}
/**
* @returns {Point}
*/
clone() {
return new Point(this);
}
/**
* @param {Array} some
* @returns {Object}
*/
static factory(some) {
if (some instanceof Array) {
switch (some.length) {
case 2:
return some;
case 0:
return [0, 0];
default:
break;
}
}
if (some instanceof Point) {
return [some.x, some.y];
}
if (some instanceof Object) {
if ('x' in some && 'y' in some) {
return [some.x, some.y];
}
}
throw new TypeError(`This type not supported.`);
}
}
--- FINoM, пример? Шторм вроде как не подхватывает... |
/**
* @interface
*/
class Base {
constructor() {
Object.assign(this, this.constructor.castConstructorData(...arguments));
}
clone() {
return new this.constructor(this);
}
static castConstructorData() {};
}
class Point extends Base {
/**
*
* @param {(number|Point|{x: number, y: number})} pointOrX
* @param {number} [y]
*/
constructor(pointOrX, y) {
super(...arguments);
}
/**
* @see Point
*/
static castConstructorData(pointOrX, y) {
if (typeof pointOrX === 'number') {
return {x: pointOrX, y};
}
if (typeof pointOrX === 'object') {
return {x: pointOrX.x, y: pointOrX.y};
}
throw new TypeError(`Invalid arguments for Point`);
}
}
console.log(new Point(1, 2));
console.log(new Point({x: 1, y: 2}));
console.log(new Point(new Point(1, 2)));
console.log(new Point(1, 2).clone());
|
Цитата:
|
nerv_, с @variation нужно несколько раз объявить метод или класс:
/** * method x * variation 1 * ... */ /** * method x * variation 2 * ... */ Цитата:
|
trikadin, сравни это
class Point {
/**
* @param {Point|Array<Number>} some
*/
constructor(...any) {
let [x, y] = Point.factory(any);
this.x = x;
this.y = y;
}
}
и это
/**
* @interface
*/
class Base {
constructor() {
Object.assign(this, this.constructor.castConstructorData(...arguments));
}
}
в первом случае я сразу вижу свойства объекта, во втором - кто его знает что там :) FINoM, можно больше кода? Напиши для функции foo() пример. --- забыл, что можно запускать уже подобный код в браузере :)
'use strict';
class Point {
/**
* Examples:
* new Point()
* new Point(1, 2)
* new Point([3, 4])
* new Point({x: 5, y: 6})
* new Point(new Point(7, 8))
*
* @param {Point|Array<Number>} some
*/
constructor(some) {
let xy = Point.factory(Array.from(arguments)); // все-таки нельзя пока без доводки руками =(
this.x = xy[0];
this.y = xy[1];
}
/**
* @returns {Point}
*/
clone() {
return new Point(this);
}
/**
* @param {Point|Array<Number>} some
* @returns {Object}
*/
static factory(some) {
if (!some.length) {
return [0, 0];
}
if (some.length === 2) {
return some;
}
let first = some[0]; // some.length === 1
if (first instanceof Array) {
return first;
}
if (first instanceof Point) {
return [first.x, first.y];
}
if (first instanceof Object) {
if ('x' in first && 'y' in first) {
return [first.x, first.y];
}
}
throw new TypeError(`This type not supported.`);
}
}
console.log(new Point());
console.log(new Point(1, 2));
console.log(new Point([3, 4]));
console.log(new Point({x: 5, y: 6}));
console.log(new Point(new Point(7, 8)));
|
nerv_, ты сравнил интерфейс и имплементацию О_о
Используй class properties из es7, и будет сразу отлично видно, какие свойства у класса есть. Советую в связке с flow -- webstorm его хорошо держит, это удобнее, чем jsdoc. |
Цитата:
2. кроме того интерфейс - это описатель (насколько я понимаю), а у тебя уже реализация в твоем "интерфейсе" подмешена. Т.е. это не интерфейс, а базовый класс. Цитата:
|
Цитата:
Цитата:
class Base {
constructor() {
Object.assign(this, this.constructor.castConstructorData(...arguments));
}
clone() :Base {
return new this.constructor(this);
}
static castConstructorData() {};
}
class Point extends Base {
x: number;
y: number;
constructor(
pointOrX: ?(number | {x: number, y: number} | Point) = 0,
y: ?number = 0
) {
super(...arguments);
}
static castConstructorData(
pointOrX: ?(number | {x: number, y: number} | Point) = 0,
y: ?number = 0
) : {x: number, y: number} {
if (typeof pointOrX === 'number') {
return {x: pointOrX, y};
}
if (typeof pointOrX === 'object') {
return {x: pointOrX.x, y: pointOrX.y};
}
throw new TypeError(`Invalid arguments for Point`);
}
}
console.log(new Point());
console.log(new Point(1, 2));
console.log(new Point({x: 1, y: 2}));
console.log(new Point(new Point(1, 2)));
console.log(new Point(1, 2).clone());
|
Цитата:
ТайпСкрипт очень крутой (ну очень). Но ему пока реально не хватает ES6/7 фичей, хотя они ща реально сделали рывок в этом плане + пока очень раздражает невозможность описать this в анотации типа и отсутствие partial классов (причём в JS они есть). Поэтому я тоже жду 2.0. |
Цитата:
|
Цитата:
https://github.com/matreshkajs/matre...jsdoc#L87-L146 Первая вариация: http://ru.matreshka.io/#!Matreshka-on Вторая вариация: http://ru.matreshka.io/#!Matreshka-on(2) Как видишь, я просто определил метод дважды с разными параметрами. Для первого (основного) @variation не использовал. (не на правах рекламы :)) |
Цитата:
Цитата:
Цитата:
--- FINoM, спасибо :) Карму не плюсует. --- Цитата:
|
http://javascript.ru/forum/287999-post1062.html
Цитата:
Цитата:
в 2013 году возможно его там не было, хотя на 2ip.ru показал дату создания домена Creation Date: 19-apr-2012, но может быть и не было в общем, там при глобальной установке дополнительно к grunt-у нужно ещё поставить grunt-cli Цитата:
натолкнулся на этот пост сегодня (читай вчера), когда пытался понять почему глобальный grunt --help не выводит справку, а локальный выводит, оказалось, что в файле %appdata%\npm\node_modules\grunt-cli\bin\grunt, который используется при "глобальном вызове", это просто не предусмотрено в отличие от node_modules\grunt\lib\grunt.js, который используется при "локальном вызове" логика не совсем понятна, но уже можно спокойно идти спать :) |
Цитата:
А именовать как хочешь можно, хех. |
Цитата:
// Everything looks good. Require local grunt and run it. require(gruntpath).cli(); |
как в es6 сделать что то такое?
расширить класс объектом
var obj = {
hello: "world"
};
class UseGuide extends obj {
constructor(height, width) {
super();
}
}
|
| Часовой пояс GMT +3, время: 09:05. |