CheckedComboBoxEdit 에 PlaceHolderText 기능을 적용하기 위해

 

checkedComboBoxEdit.Properties.NullText = "선택하세요.";

 

위처럼 코딩했는데 아래처럼 화면에 표시 되지 않았다.

 

ComboBoxEdit 에서는 이상없이 표시 되던 것이 CheckedComboBoxEdit 표시가 되지 않는다.

 

확인해 보니 아래 처럼 코딩해서 원하는 기능을 처리할수 있었다.

 

checkedComboBoxEdit.Properties.NullValuePromptShowForEmptyValue = true;

checkedComboBoxEdit.Properties.NullValuePrompt = "선택하세요.";

 

 

참고

https://www.devexpress.com/Support/Center/Question/Details/B199845/nulltext-does-not-display-on-checkedcomboboxedit

import tensorflow as tf

import matplotlib.pyplot as plt

import numpy as np

 

# 데이터셑 다운로드

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("./mnist/data/", one_hot=True)

 

# 실제 이미지는 28 * 28 = 784개의 특징을 가집니다.

X = tf.placeholder(tf.float32, [None, 784])

 

# 가짜 이미지를 위해 필요한 노이즈의 크기는 128로 설정합니다.

Z = tf.placeholder(tf.float32, [None, 128])

 

# 생성자: 128(노이즈) → 256(은닉층) → 784(입력층)

G_W1 = tf.Variable(tf.random_normal([128, 256], stddev=0.01))

G_b1 = tf.Variable(tf.zeros([256]))

G_W2 = tf.Variable(tf.random_normal([256, 784], stddev=0.01))

G_b2 = tf.Variable(tf.zeros([784]))

 

# 구분자: 784(입력층) → 256(은닉층) → 0 ~ 1(일치도)

D_W1 = tf.Variable(tf.random_normal([784, 256], stddev=0.01))

D_b1 = tf.Variable(tf.zeros([256]))

D_W2 = tf.Variable(tf.random_normal([256, 1], stddev=0.01))

D_b2 = tf.Variable(tf.random_normal([1]))

 

# 생성자 객체를 생성하는 함수입니다.

def generator(noise):

    hidden = tf.nn.relu(tf.matmul(noise, G_W1) + G_b1)

    output = tf.nn.sigmoid(tf.matmul(hidden, G_W2) + G_b2)

    return output

 

# 구분자 객체를 생성하는 함수입니다.

def discriminator(inputs):

    hidden = tf.nn.relu(tf.matmul(inputs, D_W1) + D_b1)

    output = tf.nn.sigmoid(tf.matmul(hidden, D_W2) + D_b2)

    return output

 

# 무작위 노이즈를 생성합니다.

def get_noise(batch_size, noise):

    return np.random.normal(size=(batch_size, noise))

 

# 가짜 이미지 생성자는 128 크기의 노이즈에서 불러옵니다.

G = generator(Z)

# 가짜 이미지 구분자는 128 크기의 노이즈가 생성한 784 크기의 이미지에서 불러옵니다.

D_gene = discriminator(G)

# 실제 이미지 구분자는 784 크기의 이미지에서 불러옵니다.

D_real = discriminator(X)

 

# 구분자의 손실 함수는 진짜 이미지가 1에 가깝고, 가짜 이미지가 0에 가깝도록 설정합니다.

loss_D = tf.reduce_mean(tf.log(D_real) + tf.log(1 - D_gene))

# 생성자의 손실 함수는 가짜 이미지가 1에 가깝도록 설정합니다.

loss_G = tf.reduce_mean(tf.log(D_gene))

 

 

# 구분자는 구분자 가중치 및 바이어스만을 사용합니다.

D_var_list = [D_W1, D_b1, D_W2, D_b2]

# 생성자는 생성자 가중치 및 바이어스만을 사용합니다.

G_var_list = [G_W1, G_b1, G_W2, G_b2]

 

# 구분자 최적화를 진행합니다.

train_D = tf.train.AdamOptimizer(0.001).minimize(-loss_D, var_list=D_var_list)

# 생성자 최적화를 진행합니다.

train_G = tf.train.AdamOptimizer(0.001).minimize(-loss_G, var_list=G_var_list)

 

# 세션을 생성해 그래프를 동작시킵니다.

sess = tf.Session()

sess.run(tf.global_variables_initializer())

 

# 구분자와 생성자의 비용 변수를 생성합니다.

loss_val_D, loss_val_G = 0, 0

 

# 배치 크기를 100으로 설정합니다.

batch_size = 100

total_batch = int(mnist.train.num_examples / batch_size)

 

for epoch in range(100):

    # 전체 배치 크기만큼 반복합니다.

    for i in range(total_batch):

        batch_x, batch_y = mnist.train.next_batch(batch_size)

        noise = get_noise(batch_size, 128)

        # 구분자는 실제 이미지 및 노이즈를 이용해 학습을 진행합니다.

        _, loss_val_D = sess.run([train_D, loss_D], feed_dict={X: batch_x, Z: noise})

        # 생성자는 노이즈만을 이용해 학습을 진행합니다.

        _, loss_val_G = sess.run([train_G, loss_G], feed_dict={Z: noise})

    # 1번 돌 때마다 학습 상황을 출력합니다.

    print('학습:', '%04d' % epoch,

          '구분자 오차: {:.4}'.format(loss_val_D),

          '생성자 오차: {:.4}'.format(loss_val_G))

    

    # 10번 돌 때마다 결과를 그림으로 확인합니다.

    if epoch == 0 or (epoch + 1) % 10 == 0:

        # 샘플 이미지의 크기는 10입니다.

        size = 10

        noise = get_noise(size, 128)

 

        # 생성자가 임의의 샘플 이미지를 생성하도록 합니다.

        samples = sess.run(G, feed_dict={Z: noise})

        

        # 만든 그림을 폴더에 출력할 수 있도록 합니다.

        fig, ax = plt.subplots(1, size, figsize=(size, 1))

        for i in range(size):

            ax[i].set_axis_off()

            # 28 * 28 크기의 이미지를 생성합니다.

            ax[i].imshow(np.reshape(samples[i], (28, 28)))

        plt.savefig('samples/{}.png'.format(str(epoch).zfill(4)), bbox_inches='tight')

        plt.close(fig)

 

 

 

 

 

아래는 출력된 이미지

 

 

 

 

 

 

C:\Projects>pip install virtualenv

Collecting virtualenv

  Downloading https://files.pythonhosted.org/packages/c4/9a/a3f62ac5122a65dec34ad4b5ed8d802633dae4bc06a0fc62e55fe3e96fe1/virtualenv-16.6.1-py2.py3-none-any.whl (2.0MB)

     |████████████████████████████████| 2.0MB 939kB/s

Installing collected packages: virtualenv

Successfully installed virtualenv-16.6.1

 

 

 

 

C:\Projects>python -m venv kjun

 

C:\Projects>ls

'ls'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는

배치 파일이 아닙니다.

 

C:\Projects>dir

 C 드라이브의 볼륨에는 이름이 없습니다.

 볼륨 일련 번호: 3AF6-6349

 

 C:\Projects 디렉터리

 

2019-06-19  오전 12:51    <DIR>          .

2019-06-19  오전 12:51    <DIR>          ..

2019-06-19  오전 12:51    <DIR>          kjun

               0개 파일                   0 바이트

               3개 디렉터리  35,647,705,088 바이트 남음

 

C:\Projects>

 

 

가상환경 실행

 

 

 

 

 

 

 

 

 

C:\Projects>python

Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03) [MSC v.1900 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import sys

>>> sys.version_info

sys.version_info(major=3, minor=6, micro=6, releaselevel='final', serial=0)

>>> sys.version

'3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03) [MSC v.1900 64 bit (AMD64)]'

>>> ^Z

https://duckduckgo.com/

가끔 유입경로에 https://duckduckgo.com/ 가 있어 먼가 했는데 (치킨 사이트인줄..;;)

검색엔진이었다.^^

개인 검색 정보를 추적하지 않고 구글보다 검색이 잘된다고하는데..

어떨지 한번 써봐야겠다..

 

 

앱을 등록하면 아래와 같이 64 비트 요구사항을 준수하지 않는다는 문구가 뜬다.

 

이를 위해선 프로젝트 속성의 Android 옵션 에서 고급 버튼을 클릭하고

'지원되는 아키텍처'의 arm64-v8a 를 체크하고 빌드하면 된다.

 

 

참고

https://developer.android.com/distribute/best-practices/develop/64-bit

웹뷰에 특정 사이트를 나타내도록 했는데

아래 처럼 에러가 발생되었다.

 

 

ERR_CLEARTEXT_NOT_PERMITTED 로 찾아보니 https 가 아닌 주소인 경우 위처럼 에러가 발생될수 있다고 한다.

위 에러 해결을 위해선 Android 프로젝트의 AndroidManifest.xml 파일의 application  에 아래와 같이

android:usesCleartextTraffic="true" 값을 넣어주면 된다.

 

앞서 만들어진 프로비전 프로필을 프로젝트에 적용하는 방법입니다.

(윈도우에서 처리하는 방법입니다.)

 

iOS 프로젝트 속성의 iOS 번들 서명에서 앞서 등록했던 프로비전 프로필이 목록에 나타나지 않습니다.

 

이를 나타내기 위해선 Visual Studio 의 도구 > 옵션을 클릭