Fork me on GitHub

Technology Strategy Pattern Reading Notes

Reading Notes - Technology Strategy Pattern

几个商业策略的例子

  • 米其林轮胎与米其林餐厅指南

    卖轮胎的公司怎么会跟餐厅扯上关系? 在1900年的时候,车还是个新鲜事物,而且价格也贵,人们的观念还没有转变成每个人都需要拥有一辆车,所以当时拥有车的还是少数人。对一家卖轮胎的公司来讲,如何能在这么少的车的数量里,卖出尽可能多的轮胎,这是关系到企业生存和增长的问题。

    只有两种方法能卖出更多的轮胎: 卖更多的新车;或者寻求一种方法让拥有车的人开得更多,以便更早地更换轮胎。

    于是米其林公司创造性的创建了推荐各地美味餐厅的米其林餐厅指南,并且免费推出。就这样,这份餐厅指南,成了米其林公司绝妙的广告手段,很快它的名字传遍了法国,欧洲乃至世界。人们也真的被鼓励拥有新车,以便能开着自己的车去米其林指南里推荐的地方去享用美食。

  • Oracle 的并购

    2007年,甲骨文公司制定了一条商业准则: 让甲骨文的所有细分产品在市场中都保持数一数二,如果自己本身的产品做不到,就收购同类产品的领导者。

    在2008 到 2013 期间,甲骨文大约收购了60多家公司,达到平均每个月收购一家公司的频率。从2004到2014的十年间,甲骨文在收购上花费了450亿美金。

    这项策略的效果是有利有弊。一方面他让客户感知到用甲骨文的产品没错,因为他是数一数二的。另一方面它让甲骨文忙于把现有的产品与收购的产品进行集成和整合, 而忽视并错过了在云计算和人工智能方面的创新的最佳时期。

  • 施乐(Xerox)和 佳能(Canon)的不同

    施乐在1968年发布了一款每分钟能复印120张的复印机,面向大企业客户。 2年后,施乐占领了95%的市场份额。 施乐的机器很大,很复杂,也很贵,需要施乐的专业的服务人员进行维护和维修。它的策略就是为了与世界500强这样的大公司保持紧密的长期的客户服务关系。

    佳能研究了施乐,并推出了把可靠性放在第一位的产品。 它的产品相对便宜的多,面向各种类型公司以及个人。它设计的打印机由几个模块构成,并且模块相互独立,一旦某个模块损坏,可以很方便的替换。 虽然单个的复印能力没有施乐的强,但是因为便宜,对于大公司,同样的买施乐产品价格可以采购多套佳能的产品,这样还能保证可用性,因为一个坏了,还有许多其他的可以使用,而不会影响工作。

    因为佳能设计的打印机便宜,因此它抓住了个人和小企业用户。这为佳能打开一条新的收入渠道,这是施乐所不能与之竞争的。

Continue reading →

Play With Firefox

Play With Firefox

Firefox Screenshots

Select the Screenshots icon from the page actions menu in the address bar, and the Screenshots menu will appear on top of your browser window.

Screenshots tour

Extensions

  • Video Speed Controller
  • Tampermonkey
  • Feedbro - Advanced Feed Reader
Continue reading →

Play With Debian

Play With Debian

debian-logo

Records tools installation when playing with Debian.

Git Installation

sudo apt install git
git --version
git config --global user.name "Sammy"
git config --global user.email "sammy@domain.com"


Visual Studio Code Installation

Debian and Ubuntu based distributions

The easiest way to install Visual Studio Code for Debian/Ubuntu based distributions is to download and install the .deb package.

To install old 32 bit version for Linux (ex. version 1.32), you can find it here https://code.visualstudio.com/updates/v1_32


sudo apt install ./<file>.deb

# If you're on an older Linux distribution, you will need to run this instead:
# sudo dpkg -i <file>.deb
# sudo apt-get install -f # Install dependencies

Install using Snapd


sudo apt update
#Enable snapd
sudo apt install snapd -y
# Install Visual Studio Code
sudo snap install code --classic

Chinese Input 中文输入法


sudo apt-get install fcitx
sudo apt-get install fcitx-pinyin

./im-config # 输入法配置工具

Terminal 终端下复制粘贴快捷键

  • 复制 CTRL+SHIFT+C
  • 粘贴 CTRL+SHIFT+V

Games

# supertux
sudo apt-get install supertux

Password Manager

sudo apt-get install keepassx

BitTorrent Client


sudo apt-get install qbittorrent

Mount Network Location

sudo apt-get install cifs-utils smbclient


sudo mkdir /media/Data

# List the share name in remote host with real host ip
smbclient -L //192.168.*.*

sudo mount -t cifs -o username=*** //192.168.*.*/sharename /media/Data/

Claws Mail Setting

IMAP

服务器名称: outlook.office365.com

端口: 993

加密方法: TLS

SMTP

服务器名称: smtp.office365.com

端口: 587

加密方法: STARTTLS

Thunderbird Install

  • Download Thunderbird from the Thunderbird download page to your home directory.
  • Extract the contents of the downloaded file
      tar xjf thunderbird-*.tar.bz2
    
  • To start Thunderbird, run the thunderbird script in the thunderbird folder: ~/thunderbird/thunderbird

  • Create the desktop shortcut launcher

Create a new text file called Thunderbird.desktop in the /home/pi/Desktop/ directory, e.g. /home/pi/Desktop/Thunderbird.desktop, contains the connect below:

[Desktop Entry]
Name=Thunderbird
Comment=Thunderbird Shortcut
Icon=/path/to/a/icon/for/the/Thunderbird/shortcut
Exec=/usr/share/applications/Thunderbird
Type=Application
Encoding=UTF-8
Terminal=false
Categories=None;

VPN


sudo apt-get install shadowsocks

sslocal -c sslocal.conf # connect to the proxy server.

Firefox Proxy Setting

Firefox Flash Player

Download and execute this shell script fireflashupdatewith the following commands:


wget https://raw.githubusercontent.com/cybernova/fireflashupdate/master/fireflashupdate.sh
chmod +x fireflashupdate.sh
./fireflashupdate.sh

Putty - SSH Client


sudo apt-get install putty

GIMP - Open Source Image Editor

# https://www.gimp.org/
sudo apt-get install gimp

Snapd - Tool to interact with Ubuntu Core Snappy

Snaps are app packages for desktop, cloud and IoT that are easy to install, secure, cross-platform and dependency-free.

sudo apt-get install snapd
sudo reboot
sudo snap install hello-world ## find the snaps to install from store https://snapcraft.io/store

Find - search for files


find . -name "*羽毛球*" # search current path for a file name contains '羽毛球'


List the recently installed packages

# This will list all the packages including the dependencies that were installed recently on your system along with the time of installation.
grep " install " /var/log/dpkg.log

# This will show only the programs that you installed using apt command.
grep " install " /var/log/apt/history.log

多屏幕显示

# 显示可用显示器
xrandr

# 仅在外接VGA显示器显示,关闭笔记本显示器
xrandr --output VGA-1 --auto --output LVDS-1 --off

# 扩屏显示
xrandr --output VGA-1 --auto --right-of LVDS-1

摄像头视频拍照工具

# cheese  一个使用摄像头拍摄录像或照片的工具

sudo apt-get install cheese

Printer Setup

Install HP Linux Image and Printer

https://developers.hp.com/hp-linux-imaging-and-printing/gethplip



sudo apt-get install hplip
sudo apt-get install hplip-gui


Install aria2


sudo apt-get install aria2

aria2c -h

start simplenote


sudo simplenote --no-sandbox

Screenshot Tools

scrot - commandline screenshot tool

In commandline, type ‘scrot’ will take the screenshot, or press ‘PrintScreen’ button will take the screenshot.


scrot
# The screenshot is saved under the specified file name. In addition, the parameters cause the screenshot to be created only after a delay of -d (delay) of 5 seconds. The parameter -c also displays this delay as a countdown. 
scrot -cd 5 screenshot.png

# -s select the region to take screenshots
scrot -s -cd 5 ./images/screenshot.png

gnome-screenshot

Making a Keyboard Shortcut for Gnome Screenshot The one real downside to Gnome Screenshot is that, as soon as you save one picture, the app closes and you need to launch it again for the next capture.

In fact, you can change the configuration so PrtSrc launches Gnome Screenshot instead of Scrot. In short, you must

  1. Open the /etc/xdg/openbox/lxde-pi-rc.xml file for editing.

sudo nano /etc/xdg/openbox/lxde-pi-rc.xml

  1. Add the following code somewhere under the section.
gnome-screenshot --interactive</command>

That will assign Gnome Screenshot to CTRL + ALT + PrtScr, but you can also override the regular PrtSrc command that launches Scrot by editing it in this section.

sudo apt install gnome-screenshot

# open it in terminal
gnome-screenshot --interactive
gnome-screenshot -i

MOUSE WITHOUT BORDERS : Barrier

Ubuntu/Debian/Raspbian: Build from source https://github.com/debauchee/barrier/wiki/Building-on-Linux

    sudo apt update && sudo apt upgrade
    sudo apt install git cmake make xorg-dev g++ libcurl4-openssl-dev \
                    libavahi-compat-libdnssd-dev libssl-dev libx11-dev \
                    libqt4-dev qtbase5-dev
    git clone git@github.com:debauchee/barrier.git
    # this builds from master,
    # you can get release tarballs instead
    # if you want to build from a specific tag/release
    cd barrier
    ./clean_build.sh
    cd build
    sudo make install  # installs to /usr/local/ 
    barrier

Continue reading →

Labs: Jenkins Embeddable Build Status

Labs: Jenkins Embeddable Build Status

Jenkins exposes the current status of your build as an icon in a fixed URL. You can put this URL into other sites (such as GitHub README) so that people can see the current state of the build.

  • Install “Embeddable Build Status Plugin” at Jenkins -> Plugin Manager
  • Go to your job view, and click the “Embeddable Build Status” on the left.
  • Get the Markdown format link and put it into your README.md
Continue reading →

Docker On Docker

Labs: Pipeline with Dockerfile to run in the Slave Agent Node

Now you have Jenkins installed, If you have a Jenkinsfile try to run stage in a dedicated docker container instance, You have two options to resolve the dependency to docker.


 pipeline {
        //  agent  any

    stages {
        stage('Spell Check') {
                agent {
                    dockerfile {
                        filename 'Dockerfile.mdspell'
                        args '-u="root"'
                        }
                }
        }
    }

 }

Install Docker Within Jenkins Master

Slave Agent Node With Docker installed

For my case, I have Jenkins running as a Docker container in an Azure Ubuntu Linux VM, so in the VM host I already have Docker installed. But within the container of Jenkins, the docker is not installed.

So I specify another VM host with Docker installed as a slave agent node to the Jenkins Master host (192.168.1.1:8080). The Jenkins Master will assign pipeline jobs to the slave agent node to run.

  • Go to Jenkins-> Manage Jenkins-> Manage Node {Your-Jenkins-Root-URL}/computer/new and give the node a named “docker-agent”
  • Configure as below and Save.

    Add Node

  • Check the Node Log {Your-Jenkins-Root-URL}/computer/docker-agent/log to make sure the agent connected.

Notes: during my setting up, the log remind me to install Java in the slave agent node.


sudo apt install openjdk-8-jdk


Continue reading →

All Tags

mindset

devops

book

ci

communication

jenkins

自媒体

hometown

geek life

cloud

ai