hero image

日拱一卒,奇客雷

致敬每一个正在学习的你

东方数据 App
千万散户的数据中心
推广大师 App
让碎片化的时间,为自己的事业舔砖加瓦
夜涩美图 App
爬虫、后台、跨平台技术学习
太原东方盛慧科技有限公司隐私保护政策

生效日期 2023年7月11日

更新日期 2023年7月11日

前言

太原东方盛慧科技有限公司(以下统称"东方盛慧"或者"我们")非常重视用户的隐私和个人信息保护。您在使用我们的产品和服务时,我们可能会收集和使用您的相关信息。我们希望通过本《隐私保护政策》(以下简称"本政策"或者“本隐私政策”)向您说明在您接受我们的产品服务时,我们如何收集、使用、储存、共享和转让这些信息,以及我们为您提供的访问、更新、控制和保护这些信息的方式。

我们深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、主体参与原则、公开透明原则等。同时,我们承诺,我们将按业界成熟的安全标准,采取相应的安全保护措施来保护您的个人信息。


大约 34 分钟

做过原生开发的多少会有一些小困扰,下面的常见布局问题应该都会碰到,可注意

  1. Row中嵌套放入TextField、TextView

需要Expanded包裹

  1. Column等中嵌套ListView ListView需要Expanded包裹
  2. Container设置背景 color 和 decoration只能二选一 4.scrollview嵌套webview

东方盛慧科技小于 1 分钟
ffmpeg系列二:用ffmpeg裁剪压缩图片

ffmpeg系列二:用ffmpeg裁剪压缩图片

发布App,或者网络上传资料经常需要上传指定格式或大小的图片,身为程序员,网络工具虽多,但不能一劳永逸,总是麻烦,使用ffmpeg,一劳永逸,既熟悉了ffmpeg使用,也给自己多添了一份技能。

下面测试命令中image_source 是要处理的输入文件,out_source是处理完成之后的输出文件

1. 图片压缩:ffmpeg可以很完美的压缩图片生成新图片,并可以设置压缩等级:


ffmpeg -i image_source -q compress_level out_source
#compress_level:压缩等级为正整数,数值越大压缩等级越高


东方盛慧科技大约 3 分钟工具集ffmpeg其它
Flutter使用脚本打包

Flutter使用脚本打包

#!/bin/sh

# 使用方法:
# step1: 将该脚本放在工程的根目录下(跟.xcworkspace文件or .xcodeproj文件同目录)
# step2: 根据情况修改下面的参数
# step3: 打开终端,执行脚本。(输入sh,然后将脚本文件拉到终端,会生成文件路径,然后enter就可)

# =============项目自定义部分(自定义好下列参数后再执行该脚本)=================== #

# 是否编译工作空间 (例:若是用Cocopods管理的.xcworkspace项目,赋值true;用Xcode默认创建的.xcodeproj,赋值false)
is_workspace="true"

# .xcworkspace的名字,如果is_workspace为true,则必须填。否则可不填
workspace_name=""

# .xcodeproj的名字,如果is_workspace为false,则必须填。否则可不填
project_name=""

# 指定项目的scheme名称(也就是工程的target名称),必填
scheme_name=""

# 指定要打包编译的方式 : Release,Debug。一般用Release。必填
build_configuration="Release"

# method,打包的方式。方式分别为 development, ad-hoc, app-store, enterprise 。必填
method="enterprise"


#  下面两个参数只是在手动指定Pofile文件的时候用到,如果使用Xcode自动管理Profile,直接留空就好
# (跟method对应的)mobileprovision文件名,需要先双击安装.mobileprovision文件.手动管理Profile时必填
mobileprovision_name=""

# 项目的bundleID,手动管理Profile时必填
bundle_identifier=""


echo "--------------------脚本配置参数检查--------------------"
echo "/033[33;1mis_workspace=${is_workspace} "
echo "workspace_name=${workspace_name}"
echo "project_name=${project_name}"
echo "scheme_name=${scheme_name}"
echo "build_configuration=${build_configuration}"
echo "bundle_identifier=${bundle_identifier}"
echo "method=${method}"
echo "mobileprovision_name=${mobileprovision_name} /033[0m"


# =======================脚本的一些固定参数定义(无特殊情况不用修改)====================== #

# 获取当前脚本所在目录
script_dir="$( cd "$( dirname "$0"  )" && pwd  )"
# 工程根目录
project_dir=$script_dir

# 时间
DATE=`date '+%Y%m%d_%H%M%S'`
# 指定输出导出文件夹路径
export_path="$project_dir/Package/$scheme_name-$DATE"
# 指定输出归档文件路径
export_archive_path="$export_path/$scheme_name.xcarchive"
# 指定输出ipa文件夹路径
export_ipa_path="$export_path/"
# 指定输出ipa名称
ipa_name="${scheme_name}_${DATE}"
# 指定导出ipa包需要用到的plist配置文件的路径
export_options_plist_path="$project_dir/ExportOptions.plist"


echo "--------------------脚本固定参数检查--------------------"
echo "/033[33;1mproject_dir=${project_dir}"
echo "DATE=${DATE}"
echo "export_path=${export_path}"
echo "export_archive_path=${export_archive_path}"
echo "export_ipa_path=${export_ipa_path}"
echo "export_options_plist_path=${export_options_plist_path}"
echo "ipa_name=${ipa_name} /033[0m"

# =======================自动打包部分(无特殊情况不用修改)====================== #

echo "------------------------------------------------------"
echo "/033[32m开始构建项目  /033[0m"
# 进入项目工程目录
cd ${project_dir}

# 指定输出文件目录不存在则创建
if [ -d "$export_path" ] ; then
    echo $export_path
else
    mkdir -pv $export_path
fi

# 判断编译的项目类型是workspace还是project
if $is_workspace ; then
# 编译前清理工程
xcodebuild clean -workspace ${workspace_name}.xcworkspace /
                 -scheme ${scheme_name} /
                 -configuration ${build_configuration}

xcodebuild archive -workspace ${workspace_name}.xcworkspace /
                   -scheme ${scheme_name} /
                   -configuration ${build_configuration} /
                   -archivePath ${export_archive_path}
else
# 编译前清理工程
xcodebuild clean -project ${project_name}.xcodeproj /
                 -scheme ${scheme_name} /
                 -configuration ${build_configuration}

xcodebuild archive -project ${project_name}.xcodeproj /
                   -scheme ${scheme_name} /
                   -configuration ${build_configuration} /
                   -archivePath ${export_archive_path}
fi

#  检查是否构建成功
#  xcarchive 实际是一个文件夹不是一个文件所以使用 -d 判断
if [ -d "$export_archive_path" ] ; then
    echo "/033[32;1m项目构建成功 🚀 🚀 🚀  /033[0m"
else
    echo "/033[31;1m项目构建失败 😢 😢 😢  /033[0m"
    exit 1
fi
echo "------------------------------------------------------"

echo "/033[32m开始导出ipa文件 /033[0m"


# 先删除export_options_plist文件
if [ -f "$export_options_plist_path" ] ; then
    #echo "${export_options_plist_path}文件存在,进行删除"
    rm -f $export_options_plist_path
fi
# 根据参数生成export_options_plist文件
/usr/libexec/PlistBuddy -c  "Add :method String ${method}"  $export_options_plist_path
/usr/libexec/PlistBuddy -c  "Add :provisioningProfiles:"  $export_options_plist_path
/usr/libexec/PlistBuddy -c  "Add :provisioningProfiles:${bundle_identifier} String ${mobileprovision_name}"  $export_options_plist_path


xcodebuild  -exportArchive /
            -archivePath ${export_archive_path} /
            -exportPath ${export_ipa_path} /
            -exportOptionsPlist ${export_options_plist_path} /
            -allowProvisioningUpdates

# 检查ipa文件是否存在
if [ -f "$export_ipa_path/$scheme_name.ipa" ] ; then
    echo "/033[32;1mexportArchive ipa包成功,准备进行重命名/033[0m"
else
    echo "/033[31;1mexportArchive ipa包失败 😢 😢 😢     /033[0m"
    exit 1
fi

# 修改ipa文件名称
mv $export_ipa_path/$scheme_name.ipa $export_ipa_path/$ipa_name.ipa

# 检查文件是否存在
if [ -f "$export_ipa_path/$ipa_name.ipa" ] ; then
    echo "/033[32;1m导出 ${ipa_name}.ipa 包成功 🎉  🎉  🎉   /033[0m"
    open $export_path
else
    echo "/033[31;1m导出 ${ipa_name}.ipa 包失败 😢 😢 😢     /033[0m"
    exit 1
fi

# 删除export_options_plist文件(中间文件)
if [ -f "$export_options_plist_path" ] ; then
    #echo "${export_options_plist_path}文件存在,准备删除"
    rm -f $export_options_plist_path
fi

# 输出打包总用时
echo "/033[36;1m使用AutoPackageScript打包总用时: ${SECONDS}s /033[0m"

exit 0


东方盛慧科技大约 3 分钟flutterflutterios
ChatGpt帮助解决滑动相关控件问题

ChatGpt帮助解决滑动相关控件问题

一、下面是问的几个问题

  1. nestedscrollview 中放入 column overflow
  2. nestedscrollview中放入CustomScrollView
  3. flutter CustomScrollview中放入PageView
  4. flutter pageview自适应高度
  5. NestedScrollview 中Container内部单独滑动
  6. NestedScrollView中的 Container内部单独滑动
  7. SingleChildScrollView 使用ConstrainedBox
  8. Expanded 中放入singlechildscrollview
  9. SingleChildScrollView中放入Html
  10. expanded 中放入singlechildscrollview
  11. nestedscrollview中放入 singlechildscrollview
  12. 如何利用NestedScrollView中的controller属性来控制子singlechildscrollview的滚动行为。
  13. nestedscrollview singlechildscrollview customscrollview区别
  14. CustomScrollview中放入PageView
  15. CustomScrollview 嵌套CustomScrollView
  16. SliverFillViewport 中放入TabbarView
  17. ScrollController not attached to any scroll views. 怎么解决
  18. ScrollController 需要释放吗
  19. 怎么知道ScrollController是否被附加到别的组件上

东方盛慧科技大约 17 分钟flutterflutterchatgpt
ffmpeg系列一:用ffmpeg将视频转成gif动图

ffmpeg系列一:用ffmpeg将视频转成gif动图

写博客,考虑经常要录屏制作gif动图,找了几个软件都不尽如人意,干脆直接上ffmpeg吧

1. 首先就是将一个视频直接转成gif动图,基本命令格式如下:

ffmpeg -i 你的视频文件.mp4 生成的文件名.gif  

东方盛慧科技大约 3 分钟工具集ffmpeg其它
jenkins启动关闭脚本

jenkins启动关闭脚本

启动脚本

#!/bin/bash
java -jar /usr/local/jenkins/jenkins.war --httpPort=8080 --enable-future-java &2> jenkins.log


东方盛慧科技小于 1 分钟工具集其它jenkins
记一次后台突然离职接手记录

记一次后台突然离职接手记录

公司后台技术梳理

  • 没有真正使用docker,只是jenkins和redis用docker部署了服务
  • 并未采用自动化部署

接手步骤

第一步 找到nacos地址

第一步登录服务器 查看进程情况

确认nacos配置情况

第二部 确认是否使用docker 对自己技术不够自信,让前同事帮忙确认 第三步 发现自己能行

第三步 确认nacos配置 跟代码结合梳理nacos配置,并核实


东方盛慧科技大约 2 分钟javajava后台
2
3
4
5
...
7