неділю, 11 січня 2015 р.

Програми які визначають процент тонера на листку

Часто можна почути “1000 — 1500 сторінок при п'яти процентному заповнені тонера на листку”, але надрукували то менше, хіба там є п'ять процентів ? Для цього є спеціальні програми APFILL, page density. Та кожен виробник показує свої п'ять процентів, навіть програми по своєму рахують, наприклад сторінку 5-ти процентовому тонера виробника Canon, пораховану за 6-ть процентів. Це так вважає page density.
Програма працює лише з графічними розширеннями, типу jpeg, png. Тому для перевірки скільки ви надрукували, потрібно конвертувати ваш doc файл в малюнок. Скористуватись онлайн сервісами, чи завантажити програму для конвертування файлів. APFILL не потрібно конвертувати, вибираємо Процент заповнення екран, натискаємо на файл з текстом і розтягнути по сторінці і бачимо результат.
Ми бачимо даний текст і якщо його роздрукувати то це буде 3-ри проценти тонеру. Звісно як уже появилось що програми не точні, річ в тім що кожен виробник принтерів рахує по своєму,ми бачимо що результат різниці між програмою і виробником +- 1 процент, навіть по своєму дають кількість листків від проценту тонера. Kyocera наприклад говорить про 6-ть процентів, а HP та Canon 5 % на 1000 - 1500 листків. Завантажити програми можна з dropbox: https://www.dropbox.com/s/rrqe0r31lcnfvxq/pagedens.zip https://www.dropbox.com/s/p721j555yzdu62v/pagefill.rar

неділю, 4 січня 2015 р.

Wget – приклади використання

GNU Wget — неінтерактивна, консольна утиліта для завантаження файлів за протоколами HTTP, HTTPS та FTP. wget дає змогу рекурсивно завантажувати файли, конвертувати посилання, вказувати елементи посилання, які будуть оброблені програмою тощо.

Це хоч і консольна утиліта, але є випадки коли ця програма виручала, був випадок коли браузер Chrome не повністю завантажував файли з інтернету, саме wget тоді допоміг, як бачимо з опису, це не є торрент. Тому думаю важливо мати на замітку цю утиліту, як на всякий випадок:
- Завантаження в фоновому режимі:
$ wget -b ftp://iso.netbsd.org/pub/NetBSD/iso/6.1.4/NetBSD-6.1.4-amd64.iso

Як бачимо умови використання wget [опції] [посилання на завантаження]

2. створюємо txt файл з вільною назвою, записуємо туди посилання та завантажуємо файли які записані в фалі:
$ cat fileurl.txt
http://downloads.sourceforge.net/project/smplayer/SMPlayer/14.9.0/smplayer-14.9.0-win32.exe?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsmplayer%2F%3Fsource%3Dfrontpage%26position%3D8&ts=1420344902&use_mirror=cznic

http://www.ex.ua/load/145118186

http://gxemul.sourceforge.net/src/gxemul-0.6.0.1.tar.gz

$ wget -i fileurl.txt
Спочатку завантажить smplayerб потім фільм із ex.ua, та gxemul.sourceforge.net

3. Якщо виникла помилка при завантажені, було вимкнення інтернету, чи завантаження файлу завершилось не повністю:
$ wget -c http://site.com/path-linkfile.iso

4. Завантажити сайт для локального перегляду:
$ wget -r -l 10 -k http://site.com/download

5. Завантаження файлу з використанням логіну та паролю:
$ wget ftp://login:password@ftp.site.com/file_url.iso
$ wget --user=login --password=password ftp://ftp.site.com/file_url.iso
Де login і password відповідно ваш логін та пароль.
Слід зауважити, що є окремі опції для FTP та HTTP:
--http-user=ЛОГІН
--http-password=ПАРОЛЬ

та

--ftp-user=ЛОГІН
--ftp-password=ПАРОЛЬ

6. Завантажити все що є в каталозі, при цьому не підніматись по ієрархії вище:

$ wget -r --no-parent http://site.com/download/programu/

7. Wget та робота з куккі:

$ wget --save-cookies cookies.txt --post-data 'user=anonim&parol=bar' \ http://site.com/login.php

8. Встановити швидкість для завантаження файлу, в нашому випадку 40 КB/s:

$ wget --limit-rate=40k http://site.com/path-linkfile.iso

9. Завантажити файл в даний каталог:

$ wget -P E:\directory\ http://ftp.site.com/file_url.iso

Для UNIX подібних операційних систем:

$ wget -P /home/user/download/ http://ftp.site.com/file_url.iso

10. Перевірити посилання на файли, наприклад перевіримо чи всі є файли з списку файла fileurl.txt, результат на скріншоті:

$ wget -nv –spider -i fileurl.txt


Більше детальна інформація в документації, її можна дізнатись якщо ввести команду:
$ wget -h
чи
$ wget –help
Там можна дізнатись і про інші можливості, скажімо при цьому можна використати опцію для того що б о приділити ваш агент, що б на сайті не було о приділення Wget/v 1.14, для цього використовуємо опцію -U, --user-agent=АГЕНТ .







суботу, 3 січня 2015 р.

Білі (чисті листки ) в принтерах HP, Canon коли друкувати

 Іноді виникає така ситуація коли в принтерах HP, Canon виходять чисті листки, хоч і відправляються на друк з комп'ютера з текстом. В них є така проблема, але не у всіх проявляться, та не завжди проявляється. Не знаю як розділити тему, але краще розділити її на поради для користувача ПК, для майстра сервісного центру є свій ресурс порад. Чому, так ? Не завжди причина є принтер. Я за свій час роботи, бачив ПК, на якому переставляли Windows, бо періодично він не друкував, він працював, але в один момент він відмовлявся друкувати, все добре, ніякої помилки не викидало. Поки я не підказав, що потрібно оновити “Диспетчер черги друку” в рос. Windows XP ( Диспетчер очереди печати ). Все запрацювало без перегрузки компьютера.
 Перейдемо до нашої проблеми, ви користувач, у вас принтер лазерний виробників HP чи Canon, все було добре, але в один прекрасний момент, у вас проблема, потрібно друкувати, а там виходять чисті листки, навіть немає ніякого фону тексту, чи слабко вираженого тексту, що вам потрібно зробити:

 1. На майбутнє при установці драйверів вибирати драйвер на версію менше, наприклад на даний момент є драйвера PCL5 та PCL6, краще вибрати PCL5, шоста версія є тестова, тому можуть бути проблеми. Бувають випадки коли в пам'ять принтера попадає кусок коду і зависає процес, та принтер не може його обробити. Це особливо стосується коли нова версія pdf документу з своїми фішками, а старий не обновлений драйвер. І такі випадки бувають, саме западло, що все між собою взаємно пов'язане і іноді помилку потрібно шукати не в принтері, а в комп'ютері, чи програмному забезпеченні, саме тому порада номер два.

 2. Надрукувати документ в через іншу програму. Були випадки коли, друк через блокнот нормальний чорний текст, а через спеціальну програму, то світлий друк. Помилки в програмах є завжди, вони можуть робити нормально до одного моменту, потім дати збій.
3. Не можу знайти посилання, але на сайті НР радять не друкувати просто чистий листок, як це люблять добавляти автоматом офісні програми, хоч Microsoft Office. Тому відключаємо цю авто опцію в офісних програмах.

 3. Можлива причина що тонер точно закінчився, і магнітний вал уже без покриття тонера, можна витягнути картридж і похитати його, може чуть насипатись шару, але тоді текст буде видно хоч частково, якщо це дійсно ця причина, тому якщо виявили таку помилку, картридж на заправку.

 4. Перевірити кабель USB, є випадки коли він псується, коли він гнувся, коротке замикання. Кабель USB є різні, так чим дорожче і товстіше тим він краще. В них є свої характеристики і діляться на групи.
Для мене самий найважливіший показник в USB шнурах є довжина кабелям на яких він працює, як я уже писав, це можливо дізнатись на кабелю, там є цифри і букви. Це так званий ступінь затухання сигналу. Вона позначається на шнурові буквами AWG ( наприклад 28AWG ), де 28 можуть бути:
28 = 0.81 м
26 = 1.31 м 
24 = 2.08 м 
22 = 3.33 м 
20 = 5.00 м
Як бачимо, що б USB шнур працював на довжині 5м, потрібно мати напис 20AWG, ні яких дротових USB перехідних з'єднань. Можна правда застосувати USB-hub пристрої.
Так що перевірте USB кабель, якщо є можливість.

 5. Очистіть систему від хламу, тимчасових файлів, особливо це стосується того диску де встановлена система, це диск С часто. Для друку потрібно теж місце, а з часом коли завантажувати файли з інтернету, працювати в інтернеті, ОС робить бекапи відновлення, видаляти файли в корзину, то місце стає більше. Та й специфічна файлова система в Windows NTFS, в яку радять записувати диск не більше 75 процентів від ємкості диску. У вас були випадки коли 2-х гігову флешку записали на 1.9 гіг, і тут вона то не відкривається, то не знаходиться при підключені. От тут щось схожа причина.
Для чистки системи можна використовувати допоміжні програми типу Ccleaner, також зробити чистку від ОС, Мой компьютер → Диск С → Свойства —> Очистка диска. Вибрати всі галочки, та нажати чистку, це займе довгий час, почекайте результат може того стояти.

 6. Перегрузити комп'ютер, само собою, перевірити чи допоможе.

 7. Виключити принтер, від'єднати від живлення, від'єднати і USB, нажати на включення, почекати секунд 30 і увімкнути принтер. Відповідно під'єднати і USB та живлення.

 8. Перевірте систему на оновлення, були випадки коли він браузера не друкувався текст, тому що браузер оновили, а ОС ні, устанвощики ОС дуже люблять свій диск пятирічної давності, але система обновляється, также і протоколи, так і в цьому випадку, після оновлення системи все запрацювало, тому що додали оновлення друку по мережі.

 Я не написав про закриту шторку, перевірку контактів, BGA, з цим у користувача буде важко, я описав рішення проблем, зв'язаних тісно між комп'ютером і принтером. Були випадки коли в сервіс принесли лазерний принтер на ремонт, у клієнта він друкував чистий листок, а в сервісі він працював нормально.
Друкуйте без проблем ! Задавайте питання, якщо виникли.
 # HP Canon, чистые листы, белые листы, печать




пʼятницю, 2 січня 2015 р.

Мова С і відповідь на прості запитання - частина 1

На початкових етапах вивчення програмування виникають такі питання:
1. #include <stdio.h> писати в кожній програмі ?
2. int main() чи void main() ?
3. return 0 чи return 1, а іноді return -1 ?

Саме зараз хочеться і поговорити на цю тему, чому ? Краще один раз зрозуміти і робити далі як потрібно, чим забити голову “я пишу так і код працює”. В першій частині ми зробимо огляд, а в другій вже буде погляд з сторони, ОС і асемблера

1. Часто написання коду починається з заголовних файлів #include, в них містяться допоміжні функції для роботи. Наприклад в stdio.h є такі допоміжні функції http://uk.wikipedia.org/wiki/Stdio.h , написати програму простеньку hello world, чи якусь дію можна і без #include <stdio.h>, от докази:

Далі використаємо компілятор Pelles C:


без stdio.h не компілюється, як бачимо все залежить від компілятора. GCC викинув попередження, але зібрав код, а Pelles C ні. Так що все залежить від компілятора і як там влаштовано, також які стандарти ISO ANSI C він підтримує, наприклад Pelles C підтримує С99 і С11 ( це дати прийняття стандартів 1999 і 2011 ). В цьому є деякі зміни в кодові, наприклад в книзі Кернігана і Річі 1988 року, код hello world виглядає так:

// приклад 1
#include <stdio.h>
main()
{
 printf("hello, world \n");

} 
Якщо ви написали код без return 0; , то нічого страшного, компілятор все сам за вас зробить, але писати повернення з програми є правилами хорошого тону, не забуваємо про це.
Друге питання тісно звязана з третім запитанням.

3. return має дві особливих задачі в коді:
1. Вихід з функції, та передати код далі
2. Повернути значення, типу return a+b;
В коді return 0; означає що функція завершилась успішно і без помилки, тому можна її закривати. Якщо ви написали return 1; то це для окремих ситуацій, таких як не відкрився файл, сталась помилка. ВUnix Операційних Системах є таке розуміння, як -1, завершення функції чи програми через сигнал. Це є дуже важливо для ОС, для вас мабуть ні, але в ОС потрібен порядок, що б не зберігати сміття впам'яті, також дані можуть далі оброблятись, а ОС повинна знати чи потрібно це робити далі чи ні ( Якщо помилка, то навіщо робити щось далі ). Розглянемо непоказовий легкий навчальний код:


А по стандарту ANSI C:


// приклад 2
#include <stdio.h>
 
int main (void)
{
    printf ("Hello, World! \n");
    return 0;
}

Як бачимо що в першому випадку немає int перед main(), немає return. Це є одна із проблем інтернету, програмування, та книжок старих. Загрузили новий компілятор, завантажили книжку ще 1988 року і вчимось програмувати. Через це в інтернетах можливо зустріти навіть такі вираження “А я пишу так, бо це швидко працює”, хоча ці дані застаріли, компілятор все збирає по новому і по різному. Автор навіть не заглядає в код асемблера і не розуміє що швидко і чому, лиш того що прочитав це в книжці. Я вважаю що правильно писати як в другому прикладі. Сам автор мови програмування С велів.
Важливо також запам'ятати, якщо програма працює не правильно, то можливо потрібно дописати інші бібліотеки, наприклад, коли ви написали програму по розрахунку будь якої задачі, а рахування проходить не правильно, то швидше за все потрібно дописати:
#include <math.h>
там є функції для роботи по математичній темі.
Ознайомитись з stdio.hйого короткими функціями, та іншими стандартними заголовними файлами можна на сторінці Вікіпедії https://uk.wikipedia.org/wiki/Stdio.h

2. По стандарту ANSI C, правильно int main()а не void main(), void означає, що функція не верне ніякого значення, всі функції void не мають повернень (return), а у нас в коді return 0;. Нуль це десяткове ціле значення, тому правильніше int main().
Якщо ви написали код без return 0; то це не проблема, компілятор все зробить за вас сам , добавить вихід з функції :

#include <stdio.h>
int main (void)
{
FILE *fil;
if((fil=fopen("file.txt", "r"))==0)
{
printf("error open file \n");
return 1;
}
else
{
printf("File open good \n");
}
fclose(fil);
return 0;
}

Як бачимо з коду ми сповістили ОС, якщо файла немає, то це помилка і не варто робити дальше виконання, виходимо, на будь-який випадок закриваємо структуру файла fclose(fil);
Варто і згадати про exit();
exit(0); означає що програма ( не функція) завершилась нормально і можна закривати програму. А еxit(1);сталась помилка.

Сама найголовніша проблема, це те що майбутній програміст не читає як все на справді працює, дивиться на приклади, чи копіює код. Друга справа, це дивитися на свій код і в дизасемблері бачити то що згенерував компілятор, та ще й розуміти шо там. Так що, читаємо, думаємо, експериментуємо, за це ніхто по фейсові не дасть, а лиш покритикує.