Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #2121 (permalink)  
Старый 14.11.2017, 16:22
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Node.js & Typescript
Всем привет!

Исторически так сложилось, что есть Node.js на сервере. И вроде бы все хорошо, если бы не... отсутствие типизации в JS как таковом, и как следствие, ошибки времени выполнения, вместо ошибок компиляции (интерпретации).

В связи с чем, запрашиваю у вас шаринг опыта использования связки Node.js & Typescript. Конечно, если таковой имеется

Спасибо.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #2122 (permalink)  
Старый 18.11.2017, 14:30
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

КТо знает что такое cumulative ttl (time to live) ?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2123 (permalink)  
Старый 19.11.2017, 06:44
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

cyber,
Википедия говорит, ttl - период жизни пакета данных в сети.Time_to_live

-"Контроль TTL часто используются провайдерами для обнаружения трафика несанкционированного подключенного устройства."

Предположу, что cumulative ttl - это момент взрыва пакета (окончательного его исчезновение)
Ответить с цитированием
  #2124 (permalink)  
Старый 20.11.2017, 18:40
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от join
Предположу, что cumulative ttl - это момент взрыва пакета (окончательного его исчезновение)
Тоже что то такое подумал, на собеседование было задание
Цитата:
Write a function to calculate the cumulative TTL of the following set of requests. (The provided answer is correct and should not be modified. )
let requests = [
{requestId: 'poiax',  startedAt: 1489744808, ttl: 8},
{requestId: 'kdfhd',  startedAt: 1489744803, ttl: 3},
{requestId: 'uqwyet', startedAt: 1489744806, ttl: 12}, 
{requestId: 'qewaz',  startedAt: 1489744810, ttl: 1}
]

let cumulativeTtl = 15
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2125 (permalink)  
Старый 20.11.2017, 21:36
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от cyber
Тоже что то такое подумал, на собеседование было задание
это куда ты так зашел удачно? Они объяснили хотя бы принцип по которому это должно рассчитываться?)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #2126 (permalink)  
Старый 20.11.2017, 22:41
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

cyber,
вгуглезабанили
Ответить с цитированием
  #2127 (permalink)  
Старый 21.11.2017, 15:38
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Rise
cyber,
вгуглезабанили
Нет, я видел, но для начала хотел понять сам и не уверен уже что правильно потому что меня послали
Сообщение от nerv_
это куда ты так зашел удачно?
https://freighthub.com/en/
Сообщение от nerv_
Они объяснили хотя бы принцип по которому это должно рассчитываться?)
Нет, первое задание еще круче
Цитата:
1) Write a function to transform array a to array b and print the elements of array b to the console.
let a = [2, 4, 6, 8, 9, 15]
let b = ['4', '16', '64']
По логике тут нужно сделать F(a) = b (или я тупой) , но судя по гуглу тут тупо нужно добавить элементы из массива а в масси б :|
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2128 (permalink)  
Старый 21.11.2017, 15:40
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

И раз такая пъянка пошла, как думаете что не так с решением этого задания ?
Цитата:
3) Read a text file containing a set of flat polygons represented as one polygon per line. Each line contains a comma-separated list of side lengths (for example “3,4,8,5,7”). Write a function to classify the set of polygons into four mutually exclusive subsets: triangles, rectangles, squares, and everything else. The union of all four subsets should be the original set of polygons. All the sides of the polygons are connected and the angles between them are irrelevant. Only consider the lengths.
const readline = require('readline');
const fs = require("fs");
const Stream = require('stream');

function isTriangle(sides) {
    if (sides.length !== 3) {
        return false;
    }

    const a = parseInt(sides[0]), b = parseInt(sides[1]), c = parseInt(sides[2]);
    return a + b > c && a + c > b && b + c > a;
}

function isSquare(sides) {
    const firstSide = sides[0];
    return sides.length === 4 && sides.every(side => side === firstSide);
}

function isRectangle(sides) {
    return sides.length === 4 &&
        sides[0] === sides[2] && sides[1] === sides[3]
}

function getLineStream(filePath) {
    const readFileStream = fs.createReadStream(filePath);
    const outputStream = new Stream();
    return readline.createInterface(readFileStream, outputStream);
}

function getPolygons(lineStream) {
    return new Promise((resolve, reject) => {
        const all = [];
        const triangles = [];
        const squares = [];
        const rectangles = [];
        const others = [];

        lineStream.on("line", set => {
            set = set.split(",");
            if (isTriangle(set)) {
                triangles.push(set)
            }
            else if (isRectangle(set)) {
                rectangles.push(set);
            } else if (isSquare(set)) {
                squares.push(set);
            } else {
                others.push(set);
            }

            all.push(set);
        });

        lineStream.on("error", reject);
        lineStream.on("close", () => {
            resolve({all, triangles, squares, rectangles, others})
        })
    })
}

(async function () {
    const {all, triangles, rectangles, others, squares} = await getPolygons(getLineStream("./file"));
    console.log(`Triangles ${triangles.join("")}`);
    console.log(`Squares ${squares}`);
    console.log(`Rectangles ${rectangles}`);
    console.log(`Others ${others}`);
    console.log(`All ${all}`);
}());
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #2129 (permalink)  
Старый 22.11.2017, 13:24
Аватар для join
Профессор
Отправить личное сообщение для join Посмотреть профиль Найти все сообщения от join
 
Регистрация: 05.03.2012
Сообщений: 477

Сделал бы так:
const readline = require('readline');
const fs = require("fs");
const Stream = require('stream');

function isTriangle(sides) {
    if (sides.length === 3) {
        return true;
    }
    return false;
    //const a = parseInt(sides[0]), b = parseInt(sides[1]), c = parseInt(sides[2]);
    //return a + b > c && a + c > b && b + c > a;
}

function isSquare(sides) {
    const firstSide = parseInt(sides[0]);
    return sides.length === 4 && sides.every(side => parseInt(side) === firstSide);
}

function isRectangle(sides) {
    return sides.length === 4 && parseInt(sides[0]) === parseInt(sides[2]) && parseInt(sides[1]) === parseInt(sides[3]) && parseInt(sides[0]) !== parseInt(sides[1]) 
}

function getLineStream(filePath) {
    const readFileStream = fs.createReadStream(filePath);
    const outputStream = new Stream();
    return readline.createInterface(readFileStream, outputStream);
}

function getPolygons(lineStream) {
    return new Promise((resolve, reject) => {
        const all = [];
        const triangles = [];
        const squares = [];
        const rectangles = [];
        const others = [];

        lineStream.on("line", set => {
			let sex = set.replace(/[\"|\;]/gm,'').split(",");
            if (isTriangle(sex)) {
                triangles.push(set)
            } else if (isRectangle(sex)) {
                rectangles.push(set);
            } else if (isSquare(sex)) {
                squares.push(set);
            } else {
                others.push(set);
            }

            all.push(set);
        });

        lineStream.on("error", reject);
        lineStream.on("close", () => {
            resolve({all, triangles, squares, rectangles, others});
        })
    })
}

(async function () {
    const {all, triangles, rectangles, others, squares} = await getPolygons(getLineStream("./file.js"));
    console.log(`Triangles ${triangles.join("")}`);
    console.log(`Squares ${squares}`);
    console.log(`Rectangles ${rectangles}`);
    console.log(`Others ${others}`);
    console.log(`All ${all}`);
}());


file.js:
"4,2,3,4";
"2,5,2,5";
"6,6,6,6";
"2,4,6";
"5,12,44,55,44,33";
"4,3";
"7,8,9";
"4,4,4,4";
Ответить с цитированием
  #2130 (permalink)  
Старый 22.11.2017, 13:42
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

join,
Тоже так сделал сначала, а потом вспомнил что есть формула..
Цитата:
function isTriangle(sides) {
    if (sides.length === 3) {
        return true;
    }
    return false;
    
}
а есть ли смысел parseInt если нам нужно тупо сравнить
Цитата:
function isRectangle(sides) {
    return sides.length === 4 && parseInt(sides[0]) === parseInt(sides[2]) && parseInt(sides[1]) === parseInt(sides[3]) && parseInt(sides[0]) !== parseInt(sides[1]) 
}
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.

Последний раз редактировалось cyber, 22.11.2017 в 13:44.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3448 03.07.2023 09:47
React'а тред melky Оффтопик 246 13.11.2016 08:07
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Смешных историй тред monolithed Оффтопик 11 04.03.2015 04:20
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50