2016년 7월 26일 화요일

제과업계의 고충?! 제과업계의 되도않는 변명!!

다.. 먹는다.. 다 먹는다고.. 
변명 같지도 않은 변명을.. 쯧..


#제과업계의되도않는변명

7월 24일. 신발밑창 떨어졌다. ㅋㅋㅋㅋ

신발밑창 떨어졌다. 젠장ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
하마입이야;;ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
꽤 좋아하는 신발이었는데, ... 수선해야지;;ㅋㅋㅋㅋㅋ


원피스 - 쵸파윙(チョッパーウイング) 완성.

저번에 만든 쵸파크랜(http://openuiz.blogspot.kr/2016/07/blog-post.html)에 이어,
이번엔 쵸파윙(チョッパーウイング)을 만들었다.
(건프라에 비해 조립이 간단해서 금방 만든다. ㅎㅎ)

(봉지안의 모습)

이거시 쵸파윙!ㅋ

쵸파크랜보다 더 귀여울듯하다는 예상을 깨고, ...
훨씬 더 귀여웠다!!!! ㅜㅜ




그나저나.. 이걸 어디에 장식하나.. 아크릴박스는 또 왜케 비싼지. ㅠㅠ
회사 내 데스크에 가져다놓을까? (이나이에 괜한 푼수짓이려나..)






삼성동 "영동 족발보쌈" - 가지마라. 후...

서울 강남구 삼성동 158-4

"영동족발보쌈"




한숨으로 시작한다.





이사람이 밥 남긴거 처음본다.
(슬쩍 보이는 옆꾸리 포스로도 짐작들 가겠지?)

겁나짜다!

아오!!
뚝불에 첨가된 버섯에선 쉰내도 난다!!!!!!




밥 더 달라해서 말아보았다. 
물도 퍼 붰다.

그래도 짜다.

회사동료들도 내가 음식투정하는거 첨 봤을거다.
원래 맛을 잘 몰라서 주는대로 먹는구만.. ㅠㅠ

결국 감당안되게 불어버린 개밥이 되었다.
결국 나도 남겼다.


"밥한공기 더주세요. 음식이 너무 짜네요"


이말을 했는데도 점원은 시큰둥~
사장 부를까하다 회사사람들도 있고해서 참았는데..

뚜껑열렸다. -_-+


(바닷물을 퍼 드시고 싶은분은 꼭 여기서 드셔 보시길.)


PS. 16~17시쯤 되니 배가 살살 아프더라.

퇴근쯤... 
한참동안 뒤로 국물(?)을 쏟아냈다. 엉엉.. ㅠㅠ




2016년 7월 25일 월요일

「ORA-21561: OID generation failed」 해결방법


원문: SQL*Plus でログインしようとすると「ORA-21561: OID generation failed」発生


Linux マシンに Instant Client をインストールして、リモートホストのデータベースに sqlplus で接続しようとしたら、ORA-21561 が発生した。
Linux 시스템에 Instant Client를 설치하여 원격 호스트의 데이터베이스에 sqlplus로 접속하려고 했더니, ORA-21561가 발생했다.


1
2
3
4
5
$ ./sqlplus scott/tiger@dbserver:1521/orcl
SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 27 11:25:39 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-21561: OID generation failed

/etc/hosts に hostname で返されるホスト名を追記したら解決した。
( /etc/hosts에 hostname에서 반환되는 호스트 이름 추가하니까 해결됐다. )

1
2
3
4
5
[root@yazekats-linux rlwrap-0.37]$ hostname
yazekats-linux
[root@yazekats-linux rlwrap-0.37]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain yazekats-linux ★追記
::1       localhost localhost.localdomain localhost6 localhost6.localdomain6


参考
ORA-21561 and Oracle Instant Client 11.2
Note:1335327.1 Ora-21561: OID Generation Failed



2016년 7월 22일 금요일

mecab-ko-dic 품사 태그 설명

mecab-ko-dic 품사 태그 설명

대분류세종 품사 태그mecab-ko-dic 품사 태그
태그설명태그설명
체언NNG일반 명사NNG일반 명사
NNP고유 명사NNP고유 명사
NNB의존 명사NNB의존 명사
NNBC단위를 나타내는 명사
NR수사NR수사
NP대명사NP대명사
용언VV동사VV동사
VA형용사VA형용사
VX보조 용언VX보조 용언
VCP긍정 지정사VCP긍정 지정사
VCN부정 지정사VCN부정 지정사
관형사MM관형사MM관형사
부사MAG일반 부사MAG일반 부사
MAJ접속 부사MAJ접속 부사
감탄사IC감탄사IC감탄사
조사JKS주격 조사JKS주격 조사
JKC보격 조사JKC보격 조사
JKG관형격 조사JKG관형격 조사
JKO목적격 조사JKO목적격 조사
JKB부사격 조사JKB부사격 조사
JKV호격 조사JKV호격 조사
JKQ인용격 조사JKQ인용격 조사
JX보조사JX보조사
JC접속 조사JC접속 조사
선어말 어미EP선어말 어미EP선어말 어미
어말 어미EF종결 어미EF종결 어미
EC연결 어미EC연결 어미
ETN명사형 전성 어미ETN명사형 전성 어미
ETM관형형 전성 어미ETM관형형 전성 어미
접두사XPN체언 접두사XPN체언 접두사
접미사XSN명사 파생 접미사XSN명사 파생 접미사
XSV동사 파생 접미사XSV동사 파생 접미사
XSA형용사 파생 접미사XSA형용사 파생 접미사
어근XR어근XR어근
부호SF마침표, 물음표, 느낌표SF마침표, 물음표, 느낌표
SE줄임표SE줄임표 …
SS따옴표,괄호표,줄표SSO여는 괄호 (, [
SSC닫는 괄호 ), ]
SP쉼표,가운뎃점,콜론,빗금SC구분자 , · / :
SO붙임표(물결,숨김,빠짐)SY 
SW기타기호 (논리수학기호,화폐기호)
한글 이외SL외국어SL외국어
SH한자SH한자
SN숫자SN숫자





2016년 7월 13일 수요일

헬터 스켈터 (helter skelter: ヘルタースケルター) - 사와지리에리카 (2013.01.07)

헬터 스켈터 (helter skelter: ヘルタースケルター) 2013.01.07. 14:39


감독
니나가와 미카
출연
사와지리 에리카,오모리 나오,테라지마 시노부,아야노 고
개봉
2012 일본


여성들의 아름다움에 대한 욕구가 어떤 것인지 적나라하게 보여주는 영화였다고 생각한다.
"1리터의 눈물"에서 나온 그녀란게 믿기지 않을 정도로, 성숙한 연기, 깬다~ ㅋㅋ

( '1리터의 눈물' 볼땐, 정말이지 눈물 한바가지는 쏟은듯하구만.. )

이랬던 그녀가.. 이랬던 그녀가.. 이랬던 그녀가..

풋풋한 모습의 그녀는 어디가고.. ( 사와지리 에리카 완전 귀여워~ ㅠㅠ+ )
덧니도 사라졌네. 덧니 있을때가 좋았구만.

솔직히 영화 내용도 전혀 몰랐는데 사와지리 에리카가 주연이라기에 그냥 보기로한 영화구만,
노출신이라니;;
(좋은의미에서) 정말 깜짝 놀라기도 했다.

> 오랜만에 미디어에 언급되었길래 올~~~ 하면서 보는 경우? 그런 경우ㅋㅋㅋ

인기있는 연애인의 자살이라던가 우울증에 관해 좀 더 이해를 할 수 있도록 해주는 영화라본다. ( 어찌되었건 모든 인간은 원초적 외로움에서 벗어나기 어려운 법이니까. )


나름 의미있게 볼 수 있었다.








(근데.. 일본내에서는 노화속도-_-?가 빠르다는 말이 돈다는 둥 만다는 둥;; 흠..)

2016년 7월 11일 월요일

게임하던 시절을 문득 떠올리게 만드는..ㅋㅋ

(예전에 작성한 블로그 게시물)
World of Warcraft 당시 주캐릭 3개.
게임 접은지 상당시간이 흘러서인지 뭔소린지 하나도 모르겠다;;ㅋㅋㅋㅋㅋㅋㅋ
하지만, 아직도 WOW는, 최고의 게임이라 생각한다.
내가 철만 좀 덜 들었어도 반드시 하고있었을 게임! ㅠㅠ
내가 WOW를, 2004년쯤 시작한건가? 헐..ㅋㅋㅋㅋ


[작성일: 2007.07.01. 13:25]
-----------------------------------------------------------------
[2007년 06월 27일 현재]

아이디: 로빈짱
  • 타우랜 드루이드 (야성들후)
  • 70랩
  • 약초 / 연금 (변환대가 375)
  • 아이디는 원피스의 니코로빈에서 착안.

아이디: 서든데스
  • 언데드 전사 (방특전사)
  • 70랩
  • 채광 / 대장 (방어구 대가 373)
  • 아이디는 30세 되면서 만든 캐릭이라 서른됐소..에서 착안.

아이디: 블랙냥이
  • 트롤 사냥꾼
  • 70랩
  • 무두 / 가죽세공 (용가죽 대가 375)
  • 파밍사항: T5 完.
-----------------------------------------------------------------

(서버이름도 기억이 안난다.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ)


원피스 - 쵸파크랜(チョッパークレーン) 완성.

생일선물로 받은 쵸파크랜(チョッパークレーン)을 이제야 만들었다.
만들시간이 좀체 나질 않는다. ㅠㅠ;

(선물봉지를 열었을 때의 모습)

(더불어 받은 MUZI 포스트잍ㅋ)

아우~ 귀여운쵸파~ㅋㅋㅋㅋ

(그나저나.. 이건 또 언제만드나;;)

5월28일. 한달이 지나 잠깐 짬나는시간에 쵸파를 만들었다. ㅠㅠ

(쵸파미소 매력적~ㅋ)

7월9일, 1달이 더 지나서야 크랜 몸통을 만들었다.

쇠뿔도 단김에 빼랬다고, 팔까지 몽땅 만들어버렸다.

(야호~ㅋㅋㅋㅋ)

짬이 또 나야 쵸파윙(チョッパーウイング)도 만들텐데.. 흠..
(언제쯤..? ㅎㅎ)



2016년 7월 8일 금요일

word2vec_basic.py 테스트 하던 중 에러들


Tensorflow를 테스트 하기 위해, Tensorflow, Anaconda를 설치했다.

#OS는 [CentOS 7.2.1511]

  1. Anaconda3-4.1.0 : /usr/local/Anaconda3-4.1.0
  2. tensorfow-0.9.0 : /usr/local/Anaconda3-4.1.0/lib/python3.4/site-packages/tensorflow



먼저 pip3관련 에러를 보았다. (아, Python 3.x버전은 pip3이구만; ㅎㅎ)

  $ pip3 install mecab-python3       로 해결했다.



하지만, import Mecab를 해보니 다음과 같은 에러가 그 뒤를 이었다. (에이짜증;;)


원인은 뭐지? 하다가.. 아 이런ㅄ
  $ ldconfig      ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅠㅠ (없던일로)



이제 아래와같은 Git의 파이썬파일을 실행해 봤다.

location: tensorflow/tensorflow/examples/tutorials/word2vec/word2vec_basic.py


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# Copyright 2015 The TensorFlow Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import collections
import math
import os
import random
import zipfile

import numpy as np
from six.moves import urllib
from six.moves import xrange  # pylint: disable=redefined-builtin
import tensorflow as tf

# Step 1: Download the data.
url = 'http://mattmahoney.net/dc/'

def maybe_download(filename, expected_bytes):
  """Download a file if not present, and make sure it's the right size."""
  if not os.path.exists(filename):
    filename, _ = urllib.request.urlretrieve(url + filename, filename)
  statinfo = os.stat(filename)
  if statinfo.st_size == expected_bytes:
    print('Found and verified', filename)
  else:
    print(statinfo.st_size)
    raise Exception(
        'Failed to verify ' + filename + '. Can you get to it with a browser?')
  return filename

filename = maybe_download('text8.zip', 31344016)


# Read the data into a list of strings.
def read_data(filename):
  """Extract the first file enclosed in a zip file as a list of words"""
  with zipfile.ZipFile(filename) as f:
    data = tf.compat.as_str(f.read(f.namelist()[0])).split()
  return data

words = read_data(filename)
print('Data size', len(words))

# Step 2: Build the dictionary and replace rare words with UNK token.
vocabulary_size = 50000

def build_dataset(words):
  count = [['UNK', -1]]
  count.extend(collections.Counter(words).most_common(vocabulary_size - 1))
  dictionary = dict()
  for word, _ in count:
    dictionary[word] = len(dictionary)
  data = list()
  unk_count = 0
  for word in words:
    if word in dictionary:
      index = dictionary[word]
    else:
      index = 0  # dictionary['UNK']
      unk_count += 1
    data.append(index)
  count[0][1] = unk_count
  reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys()))
  return data, count, dictionary, reverse_dictionary

data, count, dictionary, reverse_dictionary = build_dataset(words)
del words  # Hint to reduce memory.
print('Most common words (+UNK)', count[:5])
print('Sample data', data[:10], [reverse_dictionary[i] for i in data[:10]])

data_index = 0


# Step 3: Function to generate a training batch for the skip-gram model.
def generate_batch(batch_size, num_skips, skip_window):
  global data_index
  assert batch_size % num_skips == 0
  assert num_skips <= 2 * skip_window
  batch = np.ndarray(shape=(batch_size), dtype=np.int32)
  labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)
  span = 2 * skip_window + 1 # [ skip_window target skip_window ]
  buffer = collections.deque(maxlen=span)
  for _ in range(span):
    buffer.append(data[data_index])
    data_index = (data_index + 1) % len(data)
  for i in range(batch_size // num_skips):
    target = skip_window  # target label at the center of the buffer
    targets_to_avoid = [ skip_window ]
    for j in range(num_skips):
      while target in targets_to_avoid:
        target = random.randint(0, span - 1)
      targets_to_avoid.append(target)
      batch[i * num_skips + j] = buffer[skip_window]
      labels[i * num_skips + j, 0] = buffer[target]
    buffer.append(data[data_index])
    data_index = (data_index + 1) % len(data)
  return batch, labels

batch, labels = generate_batch(batch_size=8, num_skips=2, skip_window=1)
for i in range(8):
  print(batch[i], reverse_dictionary[batch[i]],
      '->', labels[i, 0], reverse_dictionary[labels[i, 0]])

# Step 4: Build and train a skip-gram model.

batch_size = 128
embedding_size = 128  # Dimension of the embedding vector.
skip_window = 1       # How many words to consider left and right.
num_skips = 2         # How many times to reuse an input to generate a label.

# We pick a random validation set to sample nearest neighbors. Here we limit the
# validation samples to the words that have a low numeric ID, which by
# construction are also the most frequent.
valid_size = 16     # Random set of words to evaluate similarity on.
valid_window = 100  # Only pick dev samples in the head of the distribution.
valid_examples = np.random.choice(valid_window, valid_size, replace=False)
num_sampled = 64    # Number of negative examples to sample.

graph = tf.Graph()

with graph.as_default():

  # Input data.
  train_inputs = tf.placeholder(tf.int32, shape=[batch_size])
  train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])
  valid_dataset = tf.constant(valid_examples, dtype=tf.int32)

  # Ops and variables pinned to the CPU because of missing GPU implementation
  with tf.device('/cpu:0'):
    # Look up embeddings for inputs.
    embeddings = tf.Variable(
        tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))
    embed = tf.nn.embedding_lookup(embeddings, train_inputs)

    # Construct the variables for the NCE loss
    nce_weights = tf.Variable(
        tf.truncated_normal([vocabulary_size, embedding_size],
                            stddev=1.0 / math.sqrt(embedding_size)))
    nce_biases = tf.Variable(tf.zeros([vocabulary_size]))

  # Compute the average NCE loss for the batch.
  # tf.nce_loss automatically draws a new sample of the negative labels each
  # time we evaluate the loss.
  loss = tf.reduce_mean(
      tf.nn.nce_loss(nce_weights, nce_biases, embed, train_labels,
                     num_sampled, vocabulary_size))

  # Construct the SGD optimizer using a learning rate of 1.0.
  optimizer = tf.train.GradientDescentOptimizer(1.0).minimize(loss)

  # Compute the cosine similarity between minibatch examples and all embeddings.
  norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
  normalized_embeddings = embeddings / norm
  valid_embeddings = tf.nn.embedding_lookup(
      normalized_embeddings, valid_dataset)
  similarity = tf.matmul(
      valid_embeddings, normalized_embeddings, transpose_b=True)

  # Add variable initializer.
  init = tf.initialize_all_variables()

# Step 5: Begin training.
num_steps = 100001

with tf.Session(graph=graph) as session:
  # We must initialize all variables before we use them.
  init.run()
  print("Initialized")

  average_loss = 0
  for step in xrange(num_steps):
    batch_inputs, batch_labels = generate_batch(
        batch_size, num_skips, skip_window)
    feed_dict = {train_inputs : batch_inputs, train_labels : batch_labels}

    # We perform one update step by evaluating the optimizer op (including it
    # in the list of returned values for session.run()
    _, loss_val = session.run([optimizer, loss], feed_dict=feed_dict)
    average_loss += loss_val

    if step % 2000 == 0:
      if step > 0:
        average_loss /= 2000
      # The average loss is an estimate of the loss over the last 2000 batches.
      print("Average loss at step ", step, ": ", average_loss)
      average_loss = 0

    # Note that this is expensive (~20% slowdown if computed every 500 steps)
    if step % 10000 == 0:
      sim = similarity.eval()
      for i in xrange(valid_size):
        valid_word = reverse_dictionary[valid_examples[i]]
        top_k = 8 # number of nearest neighbors
        nearest = (-sim[i, :]).argsort()[1:top_k+1]
        log_str = "Nearest to %s:" % valid_word
        for k in xrange(top_k):
          close_word = reverse_dictionary[nearest[k]]
          log_str = "%s %s," % (log_str, close_word)
        print(log_str)
  final_embeddings = normalized_embeddings.eval()

# Step 6: Visualize the embeddings.

def plot_with_labels(low_dim_embs, labels, filename='tsne.png'):
  assert low_dim_embs.shape[0] >= len(labels), "More labels than embeddings"
  plt.figure(figsize=(18, 18))  #in inches
  for i, label in enumerate(labels):
    x, y = low_dim_embs[i,:]
    plt.scatter(x, y)
    plt.annotate(label,
                 xy=(x, y),
                 xytext=(5, 2),
                 textcoords='offset points',
                 ha='right',
                 va='bottom')

  plt.savefig(filename)

try:
  from sklearn.manifold import TSNE
  import matplotlib.pyplot as plt

  tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)
  plot_only = 500
  low_dim_embs = tsne.fit_transform(final_embeddings[:plot_only,:])
  labels = [reverse_dictionary[i] for i in xrange(plot_only)]
  plot_with_labels(low_dim_embs, labels)

except ImportError:
  print("Please install sklearn and matplotlib to visualize embeddings.")



흠.. 역시 한방에 안되나? 다음과 같은 에러 등장. ㅜㅜ


  Intel MKL FATAL ERROR: Cannot load libmkl_def.so.          

해서 구글링결과 처리방안은,
I don't understand how to built with anaconda / MKL #5046 )
A simple conda install --yes mkl mkl-service solved it for me. 란다;; ㅎㅎ
  conda install --yes mkl mkl-service        (성공)



다시실행해보았다. 음? 돈다? 라는생각도 잠시.. 좀있으니 또 에러가 나며 멈춰버렸다. (쳇)
대신 위와 같은 warning 은 사라진 에러였다.


(캬; 이게 사람 가지고 노나;;)
아까의 답변리스트 중 맨 아래 답변으로 관심을 돌렸다.
https://www.continuum.io/blog/developer-blog/anaconda-25-release-now-mkl-optimizations this link solved the problem
mkl이 없다는 에러인데, 오히려 mkl을 지우라고?ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
센스장이~ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 해결되었다;ㅋㅋㅋㅋㅋㅋㅋ

근데.. 이번엔 마지막부분에서 또 에러를 보게되었다.


흠.. 이번엔 RuntimeError: Invalid DISPLAY variable
pyplot.py와 backend_gt4agg.py에서 나는 에러였다.
역시 구글신께 문의했다. ( https://root.cern.ch/phpBB3/viewtopic.php?t=17137 )

코드가 잘못되었다면서 고치란다. 흠.. 고쳐보자.
line 237 & 238을 추가하였다.


233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
#(중략...)

try:
  from sklearn.manifold import TSNE
  import matplotlib
  matplotlib.use('Agg') # do this before importing pyplot
  import matplotlib.pyplot as plt

  tsne = TSNE(perplexity=30, n_components=2, init='pca', n_iter=5000)
  plot_only = 500
  low_dim_embs = tsne.fit_transform(final_embeddings[:plot_only,:])
  labels = [reverse_dictionary[i] for i in xrange(plot_only)]
  plot_with_labels(low_dim_embs, labels)

except ImportError:
  print("Please install sklearn and matplotlib to visualize embeddings.")



완성!! 정상으로 결과물이 나왔다.

따란!!~~~~~~


(훗, 파이썬&텐서플로우. 첫 입문 성공. ㅋㅋㅋㅋ)