bash脚本可以检测它是否在"Windows上的Ubuntu"和本机Ubuntu中运行?如果是这样,怎么样?
我env
在两台机器上运行,没有看到任何明显的环境变量差异.我可以测试/mnt/c
目录的存在,但这不是万无一失的,因为该目录可能也存在于本机Ubuntu上.
非常简单,通常的地方找出你所使用的操作系统似乎与Ubuntu for Windows上的普通Ubuntu相同.例如uname -a
,与本机GNU/Linux安装/etc/os-version
相同,与Ubuntu Trusty Tahr安装相同.
我唯一能想到的就是检查是否/mnt/c/Windows
存在,但我不确定这是否是一个万无一失的想法.
我刚刚将笔记本电脑中的Windows 10升级到Redstone 1.所以我测试了Linux子系统(Windows上的WSL,LXSS或Bash).基本上,一切都很好,但是存在一个问题,即WSL的RootFS位于%LocalAppData%
路径(例如C:\Users\xyz\AppData\Local
)中,这也是我的Windows操作系统所在的位置.它在我的笔记本电脑中消耗了大量的SSD硬盘空间,我希望我可以将它移动到我的外置硬盘.
还有一个问题.由于其他硬盘驱动器分区作为DriveFS安装,它不支持某些Linux文件系统功能chmod
,并且我的一些Linux项目构建脚本仅适用于仅位于/
和中的VoIFS /home
.
所以我试图将整个WSL RootFS移动到另一个硬盘驱动器.首先,我试图制作一个NTFS Junction(硬链接)C:\Users\xyz\AppData\Local\lxss
.我已经完全卸载了WSL并将mklink
RootFS 运行到另一个硬盘驱动器,当我再次重新安装WSL时,它无法创建新用户,并且它报告错误代码为0x80070003.
然后我四处搜索,我得到了这个:移动Linux文件系统 - 问题#449.似乎移动和制作WSL RootFS的硬链接仅在Windows 10 Build 14388之前有效,它在Windows 10 Build 14393 RTM中不起作用.唯一的办法是将整个移动%LocalAppData%
到外部硬盘驱动器,但我不能这样做,因为我是一个笔记本电脑用户,我无法到处携带外置硬盘!
所以我想问一下,有没有其他方法可以将WSL移出我的系统分区?如果我不能做到这一点,我可以创建在其他一些地方的额外VoIFS工作目录和编译我的东西?
谢谢和问候,杰克逊
是否有一种聪明/有效的算法来确定角度的斜边(即sqrt(a² + b²)
),在没有硬件乘法的嵌入式处理器上使用定点数学运算?
我试图通过Beaglebone Black的UART0打印字符串.引导程序初始化UART0,我只需要写字符.我做了一个简单的功能
void uart_put(unsigned char c)
{
while((UART0->LSR_r & 32) == 0);
UART0->THR = c;
}
Run Code Online (Sandbox Code Playgroud)
从启动代码调用以下函数我只是在此函数中打印字符.
#define SIZE_OF_ARRAY 7
int c_entry(void)
{
unsigned char s_name[SIZE_OF_ARRAY] = "Hello";
unsigned char a_name[SIZE_OF_ARRAY] = {'H','e','l','l','o','\0'};
unsigned int a_int[SIZE_OF_ARRAY] = {9,8,7,6,5,4};
int i = 0;
for(i = 0; i<6; i++)
{
uart_put('0'+i); /*print value of i*/
uart_put(9); /*print a tab*/
uart_put(s_name[i]); /*print char from string*/
uart_put(9); /*print a tab*/
uart_put(a_name[i]); /*print char from array*/
uart_put(9); /*print a tab*/
uart_put('0'+a_int[i]); /*print int from array*/ …
Run Code Online (Sandbox Code Playgroud) 我正在处理的嵌入式项目需要读取内存中的特定位置,但不需要该内存位置的值.目前我正在将volatile变量读入虚拟变量,foo1()
如下所示,但我很好奇这个方法foo2()
.
void foo1(void) {
volatile uint32_t *a = (volatile uint32_t *)0xdeadbeef;
volatile uint32_t discard = *a;
}
void foo2(void) {
volatile uint32_t *a = (volatile uint32_t *)0xdeadbeef;
*a;
}
Run Code Online (Sandbox Code Playgroud)
请参阅dissassembly(使用gcc 4.7.2和-O3编译):
foo1:
movl 0xdeadbeef, %eax
movl %eax, -0x4(%rsp)
ret
foo2:
movl 0xdeadbeef, %eax
ret
Run Code Online (Sandbox Code Playgroud)
该方法foo2()
似乎工作,但我想知道它是否可以保证工作,并不是我正在使用的编译器版本和优化的副作用.
我无法理解回归在Matlab中是如何工作的.
假设我有2个阵列(X和Y),每个阵列都有相同的大小(假设它们每个都是1x10).根据我的理解,回归函数应该帮助我找到X和Y之间的关系(我想通过绘制的数据绘制最佳拟合线),然后给我斜率.当我在Matlab中尝试这个时,我得到一个错误,说2个变量有不同的行数....但是他们没有,是吗?
如果有人能帮助我理解函数及其参数是如何工作的,我会非常感激,只是为了让我进入基本水平.
以下是一些代码示例:
x = [1,2,3,4,5,6,7,8,9,10];
y = [1,2,3,4,5,6,7,8,9,10]; %defining the arrays, they are linearly related
X=[x ones(size(x,1),1)]; %adding the (necessary?) column of ones
regress(y,X) % using the regress function for a relationship
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
??? Error using ==> regress at 64
The number of rows in Y must equal the number of rows in X.
Run Code Online (Sandbox Code Playgroud) 我结合Swift代码和第三方库(用Obj-C编写).我有一个带有UISegmentedController的UIViewController,我想在每次推送一个段或再次推送同一段时触发.
在我的Swift代码中,我有以下内容:
override func viewDidLoad() {
super.viewDidLoad()
//setup
items = ["newTab".localized,"topTab".localized,"categoryTab".localized]
carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: items as [AnyObject], delegate: self)
carbonTabSwipeNavigation.insertIntoRootViewController(self)
self.style()
self.view.userInteractionEnabled = true
carbonTabSwipeNavigation.carbonSegmentedControl!.addTarget(self, action: #selector(OverviewFolder.changesMade), forControlEvents: UIControlEvents.ValueChanged)
}
func changesMade() {
switch carbonTabSwipeNavigation.carbonSegmentedControl!.selectedSegmentIndex {
case 0:
print("tab 1")
case 1:
print("tab 2")
case 2:
print("tab 3")
default:
print("nope")
}
}
Run Code Online (Sandbox Code Playgroud)
在库中我添加了以下代码:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSInteger current = self.selectedSegmentIndex;
[super touchesEnded:touches withEvent:event];
if (current == self.selectedSegmentIndex)
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我想在每次用户按下一个段时触发一个ValueChanged动作(即使它是同一个段).目前,当我按下相同的段时,它会第二次触发,但之后UISegmentController变得无响应(无法再切换段).
我的行为很奇怪,找不到解决方法。在我的React Native应用程序中,我正在使用navigator.geolocation确定当前位置。我的应用程序几乎与Facebook地理位置代码中的示例相同。
在模拟器中,我的应用程序可以正常运行,但是当我将其部署到iPhone时,返回位置(通过getCurrentPosition和watchPosition)是不正确的。例如,速度和航向为-1,精度为65。经度和纬度似乎是有效的,但我的真实位置(在另一个国家/地区)不是有效的。我是通过调试还是将应用程序发布到iPhone都无关紧要,它始终会做出相同的反应。
但是,如果我以TomTom为例启动此应用程序,然后将其放在后台,然后启动GeolocationExample应用程序,则一切都会正常进行。
我创建的应用程序如下:
react-native init GeolocationExample
Run Code Online (Sandbox Code Playgroud)
然后用此代码替换文件index.ios.js。
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
export default class GeolocationExample extends React.Component {
state = {
initialPosition: 'unknown',
lastPosition: 'unknown',
};
watchID: ?number = null;
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
var initialPosition = JSON.stringify(position);
this.setState({initialPosition});
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);
this.watchID = navigator.geolocation.watchPosition((position) => {
var lastPosition = JSON.stringify(position);
this.setState({lastPosition});
});
}
componentWillUnmount() { …
Run Code Online (Sandbox Code Playgroud) 我有一个S3位置与在它上面创建的配置单元表中的以下的目录结构:
s3://<Mybucket>/<Table Name>/<day Partition>
Run Code Online (Sandbox Code Playgroud)
比方说,我有一个将数据写入上述表格的位置横跨使用下面的代码行多个分区的星火计划:
Df.write.partitionBy("orderdate").parquet("s3://<Mybucket>/<Table Name>/")
Run Code Online (Sandbox Code Playgroud)
如果另一个程序,如“蜂巢SQL查询”或“AWS雅典娜查询”开始在阅读的同时,从表中的数据:
他们是否考虑写入临时文件?
在写入S3位置时,spark会锁定数据文件吗?
我们如何使用Spark作为ETL工具来处理此类并发情况?
Python中每个字母加倍(或重复n次)的最有效方法是什么?
"abcd" -> "aabbccdd"
Run Code Online (Sandbox Code Playgroud)
要么
"abcd" -> "aaaabbbbccccdddd"
Run Code Online (Sandbox Code Playgroud)
我有一个需要以这种方式进行变异的长字符串,当前的解决方案涉及一个循环,n
每个字母都有连接,我想这可能更有效.
c ×3
windows-subsystem-for-linux ×3
bash ×2
embedded ×2
ios ×2
windows ×2
apache-spark ×1
arm ×1
arrays ×1
avr ×1
geolocation ×1
linux ×1
matlab ×1
objective-c ×1
python ×1
react-native ×1
string ×1
swift ×1
ubuntu ×1