Как правило, процессы, выполняющиеся без привилегий root, не могут связываться с портами ниже 1024.
Так что попробуйте более высокий порт или запустите с повышенными привилегиями с помощью sudo
. Вы можете понизить привилегии после того, как вы привязались к нижнему порту, используя process.setgid
и process.setuid
.
При запуске ваших приложений на heroku вы должны использовать порт, как указано в переменной окружения PORT.
См. http://devcenter.heroku.com/articles/node-js
var server = require('http').createServer();
var port = process.env.PORT || 3000;
server.listen(port, function() {
console.log('Listening on ' + port);
});
Распространенная ошибка.
string datetime = dataGridView1.Rows[i].Cells[2].Value.ToString();
Это неправильно! Если вы добавляете значения x в качестве строк, все они добавляются как 0
, а Series
не могут выровнять их с соответствующими слотами на оси X. Поэтому они добавляются слева направо последовательно.
Вместо этого просто добавьте x-значения в качестве DateTimes
, которые они должны быть!
Итак, если Cells
содержит DateTime
используются:
DateTime datetime = (DateTime) dataGridView1.Rows[i].Cells[2].Value;
Если они этого не делают, преобразуйте их в DateTime
DateTime datetime = Convert.ToDateTime(dataGridView1.Rows[i].Cells[2].Value);
. Для управления типом значений x установите XValueType
для каждой серии:
chart_dashboard.Series[yourSeries].XValueType = ChartValueType.DateTime;
Чтобы определить способ отображения этикеток оси, установите их форматирование:
chart_dashboard[ChartAreas[0].AxisX.LabelStyle.Format = someDateTimeFormatString;
Чтобы создать строку типа «Неделя 1», вы [
XValueType
на int16
..axis.LabelStyle.Format = "Week #0";
Чтобы извлечь номер из ваших данных, разделенных пробелом, и Convert.ToInt16!
Если вам действительно нужно вставлять разреженные значения x в виде строк, для вставки манекена DataPoint
в каждый промежуток в серии.
Создание манекена DataPoint
прост:
DataPoint dp = new DataPoint() { IsEmpty = true};
Но знание того, где пробелы заранее - это вызов! «Лучший» способ - передать данные и заполнить их перед добавлением очков. Или перейдите к нему позже, а не добавьте, вставив думмы в промежутки. И это гораздо больше проблем, чем получение данных в первую очередь!