[PHP] date, 날짜 포맷 설정

PHP
년도와 관련된 포멧  문자  설명  예 Y 4자리 숫자로 표시  1999, 2003 y 2자리 숫자로 표시 99, 03 o ISO-8601에 맞는 포맷으로 표시 (Y랑 같으나, ISO 규격에 맞는 W가 포함한 년을 사용) 1999, 2003 L 윤년 여부 윤년 : 1아닐경우 : 0 월과 관련된 포맷 문자  설명 예  F 달을 영어로 표시  January, December M 3자리의 짧은 영어로 표시 Jan, Dec m 0을 앞에 붙인 2자리 숫자  01, 12 n 월을 숫자로 표시 1, 12 t 해당하는 달의 수를 표시 28, 30, 31 일과 관련된 포맷 문자 설명 예 d 0을 앞에 붙인 2자리 숫자 01 ~ 31 j 일을 숫자로 표시 1 ~ 31  z 1년의 n번째 날  0 ~ 365 S 날짜 뒤에 영어 2글자 suffix 추가 st, nd, rd or th (j와 잘 연동됨) 예: 1st, 2nd, 3rd,…
Read More

Winform 환경설정 세팅 저장 장소

CSharp
Windows Application을 개발 할 때, 현재 상태의 설정값(사용자ID, 비밀번호, 포지션 등등... )을 저장하여 다음번 Load 시 다시 이용하려고 할 경우,   보통 Settings.settings에 키를 설정 하고 Properties.Settings.Default.세팅명 을 프로퍼티로 사용합니다.   Settings.settings에 아무런 설정이 없을 경우엔 app.config에 특별한 내용이 들어가지 않지만, Settings.settings에 세팅을 하나라도 설정하는 경우 app.config에   <configSections>     <sectionGroup name="userSettings" ...> ...   <userSettings>     <......Properties.Settings> ... #biki1983omi @netdoor!   등의 태그가 자동으로 포함됩니다.   로드시 Properties.Settings.Default.세팅명 을 이용하고, 저장시 Properties.Settings.Default.Save(); 메서드를 이용하면 됩니다.   Settings.settings에 설정할 시 '범위'는 '사용자'로 하여야 런타임시 저장할 수 있습니다. 런타임 시 ....exe.config에 값이 저장되는 것이 아니라,  C:\Users\사용자\AppData 하위의 해당 App 폴더에 값이 저장됩니다.   기본적으로 숨겨진 폴더이긴 해도, 비밀번호 등은 암호화 처리를 하는 것이 좋겠지요. ^^   가끔 네임스페이스 충돌로 인해 Full Namespace 즉, 네임스페이스.Properties.Settings.Default.세팅명 로 사용해야 하는 경우도 있으니 참고하세요.  …
Read More

소스보관

CSharp
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Drawing.Imaging; using System.Net; using System.Collections; using System.Threading; using System.IO; using MySql.Data.MySqlClient; namespace FnbfoodNaverSmartstoreCapture { public partial class MainForm : Form { private string ConnectDB = "Server=211.233.11.93; Port=3306;Database=fnbfood;Uid=fnbfood;Pwd=@fnbfood!;Charset=utf8;convert zero datetime=True;"; private MySqlCommand command; private MySqlDataReader DBResult; public MainForm() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; this.DoubleBuffered = true; } private void MainForm_Load(object sender, EventArgs e) { DateTimeCheck(); } /// <summary> /// 웹을 실제 실행해야 되는지 체크하도록 함. /// </summary> private void DateTimeCheck() { string Week = System.DateTime.Now.ToString("ddd"); int TimeHM = Convert.ToInt32(System.DateTime.Now.ToString("Hmm")); switch (Week) { case "월": case "화": case "수": case "목": case "금": if (TimeHM > 750 && TimeHM < 1810) { this.Activate(); this.Show(); this.WindowState = FormWindowState.Normal; WebLoad(); } else {…
Read More

[C#] URL에서 XML 해석

CSharp
XmlDocument doc = new XmlDocument(); doc.Load("URL주소"); XmlNodeList forecastNodes = doc.SelectNodes("rss/channel/item"); foreach (XmlNode node in forecastNodes) { if (node["category"] != null) { if (node["category"].InnerText == "NOTICE") { string parseFormat = "ddd, dd MMM yyyy HH:mm:ss zzz"; DateTimeOffset dto = DateTimeOffset.ParseExact(node["pubDate"].InnerText, parseFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); DateTextbox.Text = dto.ToString("yyyy년 MM월 dd일 (ddd) tt h시 mm분"); break; } } }
Read More

[MySQL] Auto_Increment 값 재정렬 하기

Database
MySQL에서 데이터를 정리하다 보면 auto_increment 값의 충돌로 데이터가 입력이 되지 않는 경우가 있습니다.이럴 경우 간단히 해결할 수 있는 방법이 있는데요. auto_increment 값을 재지정해주면 쉽게 해결됩니다. 단순히 원하는 값으로 초기화하기를 원하는 경우 ALTER TABLE `table_name` AUTO_INCREMENT=XXXXXX(설정한 인덱스번호); 기존의 ROW들을 재정렬 및 셋팅하기를 원하는 경우 ALTER TABLE `table_name` AUTO_INCREMENT=1; SET @CNT = 0; UPDATE `table_name` SET `table_name`.`auto_colmn` = @CNT:=@CNT+1; 만약에 데이터가 있다면은 작동하지 않을수 있습니다. ALTER TABLE `table_name` DROP `auto_colmn`; ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`); 참조 : https://code.i-harness.com/ko/q/8827ea
Read More

[MySQL] Auto_Increment 한계

Database
[MySQL] Auto_Increment 한계 CREATE TABLE을 할때, TYPE다음에 나오는 괄호안 숫자가 BYTE를 나타낸다고 알고 있었는데요,실제로 데이터를 넣어보니 끝도 없이 들어가네요. 왜 이럴까 문서를 찾아보던중 잘 정리된 블로그가 있어서 원인은 잘 알게 되었지요^^ 참고 : http://blackbull.tistory.com/44 위 사이트를 읽어보면, 결국 괄호안 숫자와 상관없이 MySQL INT 최대값까지 발번이 될것으로 판단되네요.그렇다고 INT 최대값인 4,294,967,295까지 테스트를 해볼수도 없고, 그래서 다시한번 구글링을 해봤습니다. http://forums.devshed.com/mysql-help-4/auto-increment-what-happens-at-max-value-334661.html 요길 보니깐 사람들이 잘 정리해주셨네요^^int(11) auto increment으로 설정을 하게 되면, 최대 4,294,967,295까지 발번이 되고 이후에는 error가 난다고 하네요. 최대값이 얼마나 큰 숫자인지 계산을 한 글도 있는데요,10년동안(3650일) 발번을 한다고 볼때, 일별 1,176,703 rows가 발생해야 최대값을 초과할 수 있습니다. 따라서,Transaction이 엄청 빈번한 OLTP환경에서는 SRL타입을 int(11)로 설정하기보다는unsigned BIGINT로 설정하시는게 좀더 나을것으로 판단됩니다. unsigned BIGINT면 최대값이 18,446,744,073,709,551,615이므로 왠만해서는 최대값을 초과하지 않을것으로 사료됩니다. 물론 그게 아니라면 스키마 설계를 다시하심이 낫지 않을까 개인적으로 생각해봅니다.^^아님, 돈이 빵빵하시면 오라클을 써보심도…
Read More

[C#] HTML 에서 Text만 추출

CSharp
/// <summary> /// HTML 에서 Text만 추출한다. /// </summary> /// <param name="Html"></param> /// <returns></returns> public static string StripHtml(string Html) { string output = Html; output = System.Text.RegularExpressions.Regex.Replace(output, "<br>", Environment.NewLine); output = System.Text.RegularExpressions.Regex.Replace(output, "<br/>", Environment.NewLine); output = System.Text.RegularExpressions.Regex.Replace(output, "<br />", Environment.NewLine); //get rid of HTML tags output = System.Text.RegularExpressions.Regex.Replace(output, "<[^>]*>", string.Empty); //get rid of multiple blank lines output = System.Text.RegularExpressions.Regex.Replace(output, @"^\s*$\n", string.Empty, System.Text.RegularExpressions.RegexOptions.Multiline); output = System.Text.RegularExpressions.Regex.Replace(output, " ", " "); return output; }
Read More

C# serial communication

CSharp
using System; //using OpenNETCF.IO.Ports; using System.IO.Ports; namespace ConsoleApp1 { class Program { static void Main(string[] args) { SerialPort port = new SerialPort("COM43", 115200, Parity.None, 8, StopBits.One); port.Open(); System.Threading.Thread.Sleep(1000); // waiting for Arduino reset for (int i = 0; i < 1000; i++) { Console.WriteLine(port.BytesToRead); // it write on the console only zeros, so no data is received System.Threading.Thread.Sleep(100); } port.Close(); } } }
Read More

[Ubuntu] 원격 IP로 MySQL(MariaDB)에 접속이 되지 않을 때의 해법

Database
원격 IP로 MySQL(MariaDB)에 접속이 되지 않을 때의 해법 ※ Ubuntu 16.04 MariaDb 10.0의 상황과 원격 IP의 주소가 111.222.33.44라고 가정한다. Java에서 다음과 같이 원격의 MySQL에 접속을 시도할때 String url = "jdbc:mysql://111.222.33.44:3306/나의DB명"; Connection refused 에러가 발생하거나 telnet을 이용해서 MySQL이 설치된 IP의 3306포트로 접속시 연결이 되지 않을 때의 해법이다. 네트워크의 연결 상태에따라 다양한 이유가 있을 수 있다. 예를들어 공유기 아래 서버가 물려있을 때 공유기에서 3306에 대한 포트 포워딩이 되어있지 않다면 아래의 방법이 통할수 없을 것이다. 다양한 원인들이 있으나 본 포스트는 3306 포트에 listening이 외부 IP로 설정되지 않고 127.0.0.1로 설정되어 있을 경우에 대한 해법이다. telnet을 이용해서 해당 IP로 3306포트로 접속이 되는지부터 확인해보자. 일단 Windows에서는 기본적으로 telnet을 사용할수 없는 상태로 설정되어 있다. 다음과 같이 하여 telnet을 사용할수 있도록 변경한다. 제어판 - 프로그램 제거 또는 변경 - Windows 기능 켜기/끄기 - 텔넷 클라이언트 체크 MS-DOS 창에서…
Read More
[C#] dll을 포함한 단일 exe배포 방법

[C#] dll을 포함한 단일 exe배포 방법

CSharp
일반적으로 프로그램을 배포시 exe파일과 Application이 호출하는 dll파일은 동일한 폴더(또는 dll 파일이 System폴더에 위치)에 있어야 한다. Microsoft 공식 배포처에서는 exe와 호출하는 라이브러리를 병합하는 프로그램을 배포중이지만, 컴파일러단에서 자체 해결할 수 있는 방법도 존재한다. 사용하고자 하는 dll을 프로젝트에 참조해당 dll을 프로젝트 리소스에 추가리소스에 추가된 dll의 속성 -> 빌드작업 속성 값을 포함 리소스로 지정프로그램 진입점(Program.cs)에 코드를 아래와 같이 변경리소스에 dll 파일 포함하기dll 파일 => 속성 => 빌드작업 ++ 포함리소스로 변경 using System.Reflection; using System.IO; /// <summary> /// 해당 응용 프로그램의 주 진입점입니다. /// </summary> [STAThread] static void Main() { // 리소스 dll 취득 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveAssembly); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } // .NET 4.0 이상 static Assembly ResolveAssembly(object sender, ResolveEventArgs args) { Assembly thisAssembly = Assembly.GetExecutingAssembly(); var name = args.Name.Substring(0, args.Name.IndexOf(',')) + ".dll"; var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(name)); if (resources.Count() > 0)…
Read More

쉘스크립트 비교연산자 활용

프로그램
쉘스크립트 비교연산자 활용 정수 비교 -eq     같음     if [ "$a" -eq "$b" ] -ne     같지 않음     if [ "$a" -ne "$b" ] -gt     더 큼     if ["$a" -gt "$b" ] -ge     더 크거나 같음     if [ "$a" -ge "$b" ] -lt     더 작음     if [ "$a" -lt "$b" ] -le     더 작거나 같음     if [ "$a" -le "$b" ] <     더 작음(이중 소괄호에서)     (("$a" < "$b")) <=     더 작거나 같음(이중 소괄호에서)     (("$a" <= "$b")) >     더 큼(이중 소괄호에서)     (("$a" > "$b")) >=     더 크거나 같음(이중 소괄호에서)     (("$a" >= "$b")) 문자열 비교 =     같음     if [ "$a" = "$b" ] ==     같음     if [ "$a" == "$b"…
Read More

[PHP] MySQL 데이터 출력

PHP
1. mysql_fetch_row()mysql_fetch_row()는 데이터를 0으로 시작하는 숫자형 인덱스 배열로 반환합니다. $row = mysql_fetch_row($result); echo $row[0]; 2. mysql_fetch_assoc()mysql_fetch_assoc()는 데이터를 문자형 연관 배열로 반환합니다.배열의 키 이름으로는 필드의 이름을 갖습니다. $row = mysql_fetch_assoc($result); echo $row['key']; 3. mysql_fetch_array()mysql_fetch_array()는 $result_type의 값에 따라 반환될 배열의 형태가 다릅니다. $result_type의 값으로는 아래와 같은 상수가 올 수 있으며, 기본값은 MYSQL_BOTH입니다.  - MYSQL_NUM: 이 상수를 사용하면 숫자형 인덱스 배열을 반환합니다.  =  mysql_fetch_row()  - MYSQL_ASSOC: 이 상수를 사용하면 문자형 연관 배열을 반환합니다.  =  mysql_fetch_assoc()  - MYSQL_BOTH: 이 상수를 사용하면 인덱스 배열과 연관 배열을 동시에 반환합니다. ex) $row = mysql_fetch_array($result, MYSQL_BOTH) echo $row['key']; 4. mysql_result()mysql_result($query,0,0);    =>  ' 0행 0열 값 'mysql_result($query,0,1)     =>  ' 0행 1열 값 'mysql_result($query,1,1)     =>  ' 1행 1열 값 ' 5. 주의 사항mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array() 세 함수는 한 행에서 데이터를 읽습니다.또한 데이터를 읽은 후 함수 내부의 포인터를 증가시켜 다시…
Read More

[MySQL]: “Access denied for user ‘debian-sys-maint’@’localhost’”

Database
# # sudo cat /etc/mysql/debian.cnf # 파일 수정 # Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = 비밀번호 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] user = debian-sys-maint password = 비밀번호 socket = /var/run/mysqld/mysqld.sock basedir = /usr MySQL 로그인 #mysql -u root -p <password> DB 에 비밀번호 적용 mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '비밀번호'; 재시작 #sudo /etc/init.d/mysql restart
Read More