코딩하는 사람들은 네이버의 나눔고딕코딩이 얼마나 편한지 다 안다.

그래서 코딩 관련 블로그를 처음 시작하는 김에 블로그 폰트도 나눔고딕코딩으로 바꿔보려 했는데 오랜시간 상당히 해맸다.

장시간 구글링 끝에 방법을 찾아 포스팅 해 본다. 구글 웹폰트를 이용한 방식이다.


1. 먼저 아래와 같이 추가해준다. 추가해주면 블로그 옆에 있는 메뉴 글자가 모두 바뀐다.



2. 다음에는 헤더 부분을 아래와 같이 바꿔준다. 블로그의 제목, 그러니까 윗 부분 글자가 바뀐다. 바꿀 부분 찾을 때 font-family 로 찾으면 편하다.




3. 다음에는 entry 부분을 추가해준다. 아래 처럼만 추가해주면 본문 제목 및 내용이 모두 바뀐다!





4. 마지막으로 남은 자질구레한 부분도 바꿔준다.

 


아마도 내가 하면서 미처 챙기지 못한 부분도 있을 수도 있겠다. 그러나 일단 보이는 글자는 모두 나눔고딕코딩으로 바뀐 듯 하다. 글씨체가 왠지 디지털하고 간지난다.








'ETC' 카테고리의 다른 글

일본은행과 환투기 세력 쉽게 정리  (0) 2016.01.10
-청약열기 활활  (0) 2015.10.26
자네는 신을 믿는가 (펌)  (0) 2015.02.15
프로젝트를 위한 최소한의 GIT, EGIT 사용법  (2) 2014.11.09
Mime Type In Java  (0) 2014.09.13
Posted by 타다키치
,

중개서버(BroadCastServer)가 Mp3Server에서 보내주는 파일을 EndUser에게 건네주는 방식





package io3;


import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.HashMap;

import java.util.Map;

import java.util.Scanner;


public class BroadcastServer {

ServerSocket mainServer;

Map<String, String> ipMap;

public BroadcastServer()throws Exception{

ipMap = new HashMap<String, String>();

ipMap.put("윤호","192.168.0.73");

ipMap.put("은애","192.168.0.85");

mainServer = new ServerSocket(8080);

System.out.println("ready......main ");

waitEndUser();

}


private void waitEndUser() {

Socket endUser = null;

InputStream in = null;

OutputStream out = null;

Scanner scanner = null;

byte[] buffer = new byte[1024*8];

try{

endUser = mainServer.accept();

System.out.println("EndUser: " + endUser);

in = endUser.getInputStream();

out = endUser.getOutputStream();

scanner = new Scanner(in);

System.out.println("1...................");

String serverName = scanner.nextLine();

System.out.println("2.....................");

String targetIp = ipMap.get(serverName);

Socket mp3Socket = new Socket(targetIp,5555);

InputStream mp3In = mp3Socket.getInputStream();

System.out.println("mp3In" +mp3In);

while(true){

int mp3Count = mp3In.read(buffer);

if(mp3Count == -1){ break;}

out.write(buffer,0, mp3Count);

}

out.flush();

mp3In.close();

mp3Socket.close();

}catch(Exception e){

System.out.println(e.getMessage());

e.printStackTrace();

}finally{

try{ scanner.close();}catch(Exception e){}

try{ in.close();}catch(Exception e){}

try{ out.close();}catch(Exception e){}

try{ endUser.close();}catch(Exception e){}

}

waitEndUser();

}

public static void main(String[] args)throws Exception {

BroadcastServer server = new BroadcastServer();

}

}



---------------------------------------------------------------------------------------------



package io3;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;


public class EndUser {

public void downloadMP3(){

String serverName ="은애\n";

String serverIp = "127.0.0.1";

int port = 8080;

Socket socket = null;

OutputStream out = null;

InputStream in = null;

FileOutputStream fos = null;

byte[] buffer = new byte[1024*8];

try{

socket = new Socket(serverIp, port);

out = socket.getOutputStream();

in = socket.getInputStream();

fos = new FileOutputStream("C:\\zzz\\aaa.mp3");

out.write(serverName.getBytes());

out.flush();

while(true){

int count = in.read(buffer);

if(count == -1){ break;}

System.out.println(count);

fos.write(buffer,0,count);

}

fos.flush();

fos.close();

}catch(Exception e){

e.printStackTrace();

}finally{

try{ out.close();}catch(Exception e){}

try{ socket.close();}catch(Exception e){}

}

}

public static void main(String[] args)throws Exception {

EndUser obj = new EndUser();

obj.downloadMP3();

}

}



---------------------------------------------------------------------------------------------


package io3;

import java.io.FileInputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;


public class Mp3Server {

private ServerSocket serverSocket;

public Mp3Server()throws Exception{

serverSocket = new ServerSocket(5555);

System.out.println("ready.....");

waitClient();

}

private void waitClient() {

System.out.println("클라이언트의 연결을 대기중...");

Socket client = null;

OutputStream out = null;

InputStream in = null;

byte[] buffer = new byte[1024*8];

try{

client = serverSocket.accept();

System.out.println(client);

out = client.getOutputStream();

in = new FileInputStream("C:\\zzz\\aaa.mp3");

while(true){

int count = in.read(buffer);

if(count == -1) { break; }

out.write(buffer,0, count);

}

out.flush();

}catch(Exception e){

System.out.println(e.getMessage());

}finally{

try {in.close();} catch (Exception e) {}

try {out.close();} catch (Exception e) {}

try {client.close();} catch (Exception e) {}

}

waitClient();

}

public static void main(String[] args)throws Exception {

Mp3Server obj = new Mp3Server();

}

}

Posted by 타다키치
,

Java 동적 로딩

코딩/JAVA 2014. 9. 12. 22:25

서비스 객체의 메소드를 등록, 검색 객체가 부르는 방식

등록, 검색 객체가 서비스 객체의 주소값을 가지고 있음


상속, 구현 구조:

foodstoreservice-->foodStoreServiceUI

task-->abstractUI-->searchNearStoreUI


등록, 검색 객체는 MakeInstance 객체를 통해 서비스 객체의 태스크맵에 저장됨

MakeInstance객체는 등록 객체 등을 만든 후 불러오기 위해 txt 파일이 필요



package org.thinker.fs;

import java.util.Map;

import java.util.Scanner;

public class FoodStoreUI {

private FoodStoreService service;

private Scanner scanner;

private Map<String, Task> taskMap;

public FoodStoreUI(FoodStoreService service)throws Exception {

super();

this.service = service;

this.scanner = new Scanner(System.in);

this.taskMap = MakeInstance.loadTask("C:\\zzz\\store.txt", service);

}

public void execute(){

System.out.println("TaskName ");

String taskName = scanner.nextLine();

Task task = taskMap.get(taskName);

try {

task.doJob();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

execute();

}

}


---------------------------------------------------------------------------------------------


package org.thinker.fs;

import java.io.FileInputStream;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Properties;

public class MakeInstance {

public static Map<String, Task> loadTask(String fileName, FoodStoreService service) throws Exception {

Map<String, Task> taskMap = new HashMap<String, Task>();

Properties prop = new Properties();

prop.load(new FileInputStream(fileName));

Iterator names = prop.keySet().iterator();

while(names.hasNext()){

String key = (String)names.next();

String value = (String)prop.get(key);

System.out.println(key +":" + value);

Task obj = (Task)Class.forName(value).newInstance();

obj.setService(service);

taskMap.put(key, obj);

}

return taskMap;

}

}



---------------------------------------------------------------------------------------------


package org.thinker.fs;

import java.util.List;

public interface FoodStoreService {

public void regist(FoodStoreVO vo)throws Exception;

public FoodStoreVO findByName(String name)throws Exception;

public List<FoodStoreVO> findNearStores(Location currentPos)throws Exception;

}



package org.thinker.fs;

import java.util.List;

public class FoodStoreServiceImpl implements FoodStoreService {

private FoodStoreDAO dao;

@Override

public void regist(FoodStoreVO vo) throws Exception {

// TODO Auto-generated method stub

dao.instance.saveData(null);

}

@Override

public FoodStoreVO findByName(String name) throws Exception {

// TODO Auto-generated method stub

return null;

}

@Override

public List<FoodStoreVO> findNearStores(Location currentPos)

throws Exception {

// TODO Auto-generated method stub

return null;

}

}


---------------------------------------------------------------------------------------------


package org.thinker.fs;

public interface Task {

public void setService(FoodStoreService service);

public void doJob()throws Exception;

}



package org.thinker.fs;

import java.util.Scanner;

public abstract class AbstractUI implements Task{

protected FoodStoreService service;

protected Scanner scanner;

public AbstractUI() {

super();

this.scanner = new Scanner(System.in);

}

@Override

public void setService(FoodStoreService service) {

this.service = service;

}

}





package org.thinker.fs;

public class RegistStoreUI extends AbstractUI {

@Override

public void doJob() throws Exception {

System.out.println("가게이름 ");

String name = scanner.nextLine();

}

}



package org.thinker.fs;

public class SearchNearStoreUI extends AbstractUI {

@Override

public void doJob() throws Exception {

System.out.println("Search.....");

}

}



---------------------------------------------------------------------------------------------


store.txt

NEAR=org.thinker.fs.SearchNearStoreUI

REGIST=org.thinker.fs.RegistStoreUI

Posted by 타다키치
,